1. Tipe Data Primitif pada Dart
Dart adalah bahasa strongly typed, artinya setiap variabel memiliki tipe data yang jelas. Tipe data inti pada Dart meliputi:
| Tipe Data | Deskripsi | Contoh Penulisan |
|---|---|---|
| int | Bilangan bulat tanpa desimal (64-bit integer). | int kapasitas = 500; |
| double | Bilangan pecahan desimal (64-bit floating point). | double ipk = 3.92; |
| num | Tipe induk angka (dapat menampung int maupun double). |
num suhu = 36.5; |
| String | Untaian karakter teks UTF-16 (kutip tunggal atau ganda). | String jurusan = "TJKT"; |
| bool | Nilai logika boolean: true atau false. |
bool aktif = true; |
2. Type Inference (var), dynamic, dan Object
var: Dart menyimpulkan tipe data secara otomatis berdasarkan nilai inisialisasi awal. Sekali ditetapkan, tipe data tersebut terkunci secara statis.dynamic: Variabel dapat menampung tipe data apa saja dan tipe datanya dapat berubah-ubah saat runtime (menonaktifkan static type checking).Object: Tipe induk dari semua kelas di Dart. VariabelObjectwajib dilakukan type check sebelum mengakses method spesifik.
void main() {
var nama = 'SMK Hebat'; // Tipe data String terkunci
// nama = 100; // Error kompilasi!
dynamic data = 'Hello';
data = 12345; // Valid! Dapat berubah tipe
data = [1, 2, 3];
}
3. Perbedaan final vs const
final (Runtime Constant)
Variabel hanya dapat diisi nilai satu kali saat runtime dieksekusi. Cocok untuk nilai yang didapat dari waktu sekarang atau input user.
final waktu = DateTime.now();
const (Compile-time Constant)
Nilai harus sudah pasti diketahui secara mutlak saat kompilasi sebelum program dijalankan. Menghemat alokasi memori.
const double pi = 3.14159;
4. Sound Null Safety di Dart
Sejak Dart 2.12 dan Dart 3, seluruh tipe data bersifat Non-Nullable secara default. Variabel tidak dapat diisi null kecuali dideklarasikan khusus dengan operator tanda tanya (?).
void main() {
// 1. Non-Nullable (Default)
String nama = "Ahmad";
// nama = null; // Error Kompilasi!
// 2. Nullable Type (?)
String? email = null; // Valid
// 3. Null-aware fallback (??)
String kontak = email ?? "Email belum diatur";
// 4. Null-aware assignment (??=)
email ??= "admin@ridaikrar.web.id"; // Isi hanya jika email null
// 5. Null-aware method call (?.)
int? panjang = email?.length;
// 6. Null Assertion Operator (!) -> Menggaransi non-null
String emailPasti = email!;
print("Kontak: $kontak | Panjang: $panjang");
}
Gunakan keyword late untuk mendeklarasikan variabel non-nullable yang nilainya baru akan diinisialisasi sesaat sebelum digunakan (lazy initialization).
late String konfigurasiDb;
void setup() {
konfigurasiDb = "localhost:5432";
}