Variabel dan konstanta
var, final, const, type inference, dynamic.
Pahami konsepnya
Dart punya tiga kata kunci deklarasi: var (tipe disimpulkan, bisa re-assign), final (diisi sekali, runtime), const (compile-time constant). var nama = "Ari" menghasilkan String yang tidak bisa diubah tipenya tapi bisa re-assign. final berhenti setelah diisi. const harus bisa dihitung saat kompilasi.
Tipe eksplisit: String nama = "Ari"; int umur = 17; — selalu opsional karena var menebak. dynamic adalah tipe yang BISA berubah tipe — hindari kecuali benar-benar perlu (JSON decode).
Perbedaan final vs const: final DateTime now = DateTime.now() sah (runtime); const DateTime now = DateTime.now() ERROR (bukan compile-time). const untuk nilai literal: const pi = 3.14.
Coba contoh kode
void main() {
var nama = "Ari"; // String, bisa re-assign
final umur = 17; // int, tidak bisa re-assign
const pi = 3.14159; // compile-time constant
nama = "Budi"; // OK — var re-assignable
// umur = 18; // ERROR — final
final sekarang = DateTime.now(); // OK — runtime
// const sekarang2 = DateTime.now(); // ERROR — bukan compile-time
print("$nama $umur $pi");
print(sekarang);
}var untuk nilai yang berubah, final untuk nilai sekali isi, const untuk literal compile-time. DateTime.now() hanya final karena nilainya baru diketahui saat runtime.
Latihan singkat
Uji: final nama = "Ari"; int umur = 17; cetak `Ari berumur 18 tahun depan` (umur+1).