Tabel Tipe Dasar Bawaan Dart
| Nama Kategori | Identifier Tipe | Penulisan / Contoh Literal | Penjelasan Singkat |
|---|---|---|---|
| Numbers (Angka) | int、double | int a = 10; double b = 3.14; | Angka terbagi dua jenis: bilangan bulat dan bilangan pecahan presisi ganda, kelas induk umumnya adalah num |
| Strings (String Teks) | String | var str = "foxdevelop.com"; | Menyimpan urutan karakter UTF-16, mendukung interpolasi string, teks multibaris dan string mentah |
| Booleans (Boolean) | bool | bool flag = true; | Hanya ada dua nilai yang dapat digunakan: true / false |
| Records (Record Tuple) | Literal record (v1, v2) | var record = (10, "test"); | Tipe komposit dengan panjang tetap yang menampung banyak nilai, mendukung dekomposisi variabel |
| Functions (Fungsi) | Function | void fn() {} Function func = ()=>1; | Objek kelas pertama: dapat ditugaskan ke variabel, dikirim sebagai parameter, dan dijadikan nilai kembalian |
| Lists (Daftar / Array) | List | var list = [1,2,3]; | Koleksi berurutan yang mengizinkan elemen duplikat, setara dengan array |
| Sets (Himpunan) | Set | var set = {1,2,3}; | Koleksi tidak berurutan yang tidak mengizinkan elemen duplikat |
| Maps (Pemetaan Kunci-Nilai) | Map | var map = {"name":"Tom"}; | Struktur penyimpanan pasangan kunci dan nilai, setiap kunci bersifat unik |
| Runes (Titik Kode Unicode) | Runes | Runes("\u{1f600}") | Cara lama untuk membaca titik kode Unicode di dalam string; secara resmi disarankan menggunakan paket characters |
| Null (Nilai Kosong) | Null | Null n = null; | Hanya memiliki satu nilai yaitu null, tipe dasar tingkat tertinggi pada sistem keamanan null |
Semua variabel di Dart pada dasarnya adalah objek (instance kelas). Kamu bisa membuatnya dengan cepat menggunakan literal atau menginisialisasi dengan memanggil konstruktor yang sesuai.
'hello' adalah literal string, true adalah literal boolean; konstruktor Map() digunakan untuk membuat instance Map.
Tipe Bantu Khusus Bahasa
Bukan tipe dasar bawaan, namun semuanya merupakan kata kunci cadangan Dart.
Tipe-tipe ini memiliki fungsi khusus untuk sistem tipe, pemrograman asinkron, dan pemeriksaan tipe statis:
| Tipe | Penjelasan Fungsi |
|---|---|
Object | Kelas induk dari semua kelas Dart, kecuali Null |
Enum | Kelas induk dari semua tipe enumerasi |
Future / Stream | Khusus untuk pemrograman asinkron |
Iterable | Digunakan untuk perulangan for-in dan generator sinkron |
Never | Ekspresi yang tidak pernah selesai dieksekusi dengan normal (digunakan untuk fungsi yang selalu melempar pengecualian) |
dynamic | Menonaktifkan pemeriksaan tipe statis; sebaiknya gunakan Object / Object? |
void | Tidak memiliki nilai kembalian, sering dipakai sebagai tipe kembalian fungsi |
1 Numbers Angka
Kelas induk:num
Angka terbagi menjadi dua subkelas: int (bilangan bulat), double (bilangan pecahan). Keduanya mewarisi num
1.1 int Bilangan Bulat
Perbedaan rentang nilai (Dart juga mendukung pengembangan frontend sehingga ada versi Web):
- Platform native:
-2^63 ~ 2^63 - 1 - Web (berbasis JS):
-2^53 ~ 2^53 - 1
Tanpa titik desimal; mendukung notasi desimal dan heksadesimal dengan awalan 0x
Contoh
void main() {
// Bilangan bulat desimal
var pageCount = 123;
// Heksadesimal
var hex = 0xDEADBEEF;
// Pemisah digit garis bawah (Dart 3.6+, meningkatkan keterbacaan)
var million = 1_000_000;
var mac = 0x00_14_22_01_23_45;
print(pageCount);
print(hex);
print(million);
print(mac);
}Code language: Dart (dart)
Hasil eksekusi
123
3735928559
1000000
86469845829
1.2 double Bilangan Pecahan Presisi Ganda
Memuat titik desimal atau notasi ilmiah
void main() {
var pi = 3.14; // titik desimal
var raid = 1.61e5; // 1.61 * 10^5 notasi ilmiah
var tiny = 0.000_000_000_02; // garis bawah untuk pecahan
print(pi);
print(raid);
print(tiny);
}Code language: PHP (php)
3.14
161000.0
2e-11Code language: CSS (css)
1.3 Kelas induk num
Variabel bertipe num dapat menyimpan nilai int maupun double:
void main() {
num money = 5;
money += 2.5; // Konversi otomatis ke double, money = 7.5
// Menugaskan int ke double akan dikonversi otomatis menjadi 1.0
double zoom = 1;
print(money);
print(zoom);
}Code language: PHP (php)
Hasil eksekusi
7.5
1.0Code language: CSS (css)
1.4 Konversi antar tipe
void main() {
// String → int
var one = int.parse('123');
// String → double
var pi = double.parse('3.14');
// int / double → String
String intStr = 99.toString();
String pi2 = 3.14159.toStringAsFixed(2); // Menyimpan 2 digit pecahan → "3.14"
print(one);
print(pi);
print(pi2);
}Code language: JavaScript (javascript)
Hasil eksekusi
123
3.14
3.14Code language: CSS (css)
1.5 Operator bit khusus int
Hanya int yang mendukung operasi geser, bit AND/OR/XOR dan inversi bit. Detail: Dart Bitwise and shift operators – FoxDevelop
void main() {
print(3 << 1); // Geser kiri 0011 <<1 → 0110
print(3 | 4); // Bit OR
print(3 & 4); // Bit AND
print(~3); // Inversi bit
}Code language: PHP (php)
6
7
0
-4
1.6 Konstanta angka (compile-time constant)
Literal angka murni dan operasi aritmatika antar konstanta bisa ditandai dengan const
Nilai yang dihitung menjadi tetap pada tahap kompilasi (sebelum program berjalan), tidak berubah saat eksekusi dan tidak perlu dihitung ulang disebut konstanta waktu kompilasi, ditandai dengan const.
const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Konstanta waktu kompilasiCode language: JavaScript (javascript)
const: Konstanta waktu kompilasi. Kompiler menghitung ekspresi sebelum program dijalankan dan menanam nilai tetap langsung ke file biner hasil kompilasi; saat eksekusi hanya dibaca tanpa perhitungan tambahan.
final: Konstanta waktu eksekusi (nilai hanya ditugaskan sekali saat program berjalan, tidak bisa diubah setelahnya).
1.7 Metode matematika bawaan
Tersedia langsung pada tipe num; untuk perhitungan kompleks gunakan paket dart:math
abs()、ceil()、floor()、round() dll.
num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Code language: PHP (php)
2. String Teks
Urutan karakter dengan encoding UTF-16 untuk merepresentasikan teks, ada dua cara deklarasi: tanda kutip tunggal atau ganda.
2.1 Cara deklarasi: kutip tunggal / kutip ganda
var s1 = 'teks pakai kutip tunggal';
var s2 = "teks pakai kutip ganda";
// Karakter escape
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Ganti jenis kutip tidak butuh escape
Code language: JavaScript (javascript)
Ada beberapa karakter di dalam string yang memiliki makna khusus (kutip ganda ", baris baru, backslash \). Jika ditulis langsung akan merusak struktur string dan menimbulkan error kompilasi.
Karakter escape \ berfungsi menghapus makna khusus karakter atau menampilkan simbol kontrol yang tidak terlihat.
Tombol Enter, Tab tidak tampil di layar sehingga pakai urutan escape seperti \t. Coba jalankan kode berikut untuk melihat cara kerjanya:
print("name\tage\tcountry");
print("Jack\t18\tUSA");
print("Lucy\t20\tEgypt");Code language: PHP (php)
2.2 Interpolasi string ${ekspresi}
- Untuk variabel sederhana kurung kurawal bisa dihilangkan:
$variabel - Objek akan otomatis memanggil
.toString()
void main() {
var word = "interpolation";
var str1 = "Dart memiliki fitur $word";
var str2 = "Huruf besar:${word.toUpperCase()}";
print(str2); //Huruf besar:INTERPOLATION
}Code language: JavaScript (javascript)
2.3 Penggabungan string
- Literal yang berdekatan akan digabung otomatis (meskipun ada baris baru)
- Operator
+untuk penggabungan
var s1 = "Baris pertama"
"Baris kedua";
var s2 = "a" + "b";
assert(s1 == "Baris pertamaBaris kedua");
assert(s2 == "ab");Code language: JavaScript (javascript)
2.4 String multibaris: tiga kutip tunggal ”’ / tiga kutip ganda “””
void main() {
var multi1 = '''
Teks
multibaris
''';
var multi2 = """
String multibaris tiga kutip ganda
hello foxdevelop.com
""";
print(multi1);
print(multi2);
}Code language: PHP (php)
Teks
multibaris
String multibaris tiga kutip ganda
hello foxdevelop.comCode language: JavaScript (javascript)
Kutip ganda di dalam tiga kutip tunggal dan sebaliknya tidak perlu escape:
2.5 String mentah r”” abaikan karakter escape
var raw = r"Simbol baris baru \n tidak akan diproses";
print(raw); // \n dicetak apa adanya
Code language: PHP (php)
2.6 Batasan string const
Konten interpolasi hanya boleh berupa konstanta waktu kompilasi (angka, bool, string const); variabel biasa dan koleksi tidak diizinkan
const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// String const valid
const valid = "$cNum $cBool $cStr";
var normalNum = 10;
// Salah: interpolasi memuat variabel non-konstanta
// const invalid = "$normalNum";
Code language: JavaScript (javascript)
3. bool Tipe Boolean
Hanya ada dua instance: true / false, keduanya konstanta waktu kompilasi
Dart menggunakan tipe kuat: tidak bisa langsung gunakan angka atau string untuk pengecekan benar/salah, wajib pakai perbandingan eksplisit
void main() {
var emptyStr = "";
print(emptyStr.isEmpty); // Cek string kosong
var zero = 0;
print(zero == 0); // Cek nol
var nil = null;
print(nil == null); // Cek null
var nan = 0 / 0;
print(nan.isNaN); // Cek bukan angka
}Code language: PHP (php)
4. Runes & characters Pengolahan Karakter Unicode
- Runes: cara lama untuk membaca titik kode Unicode di dalam string
- Disarankan pakai
package:characters: memproses klaster grafem yang tampak sebagai satu karakter penuh (seperti emoji bendera negara)
Sintaks escape Unicode
- 4 digit heksadesimal:
\uXXXX - Titik kode besar lebih dari 4 digit:
\u{heksadesimal}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Code language: JavaScript (javascript)
Contoh paket characters
import 'package:characters/characters.dart';
void main() {
var text = "Hi 🇩🇰";
print(text.characters.last); // Mencetak emoji bendera Denmark utuh
}
Code language: JavaScript (javascript)
5. Symbol Simbol
Digunakan untuk refleksi dan obfuscasi kode, literal #identifier, konstanta waktu kompilasi.
Proses obfuscasi tidak mengubah Symbol, cocok untuk merujuk identifier secara dinamis berdasarkan nama.
#userName
#getData
Code language: CSS (css)
6. Null Tipe Nilai Kosong
Hanya memiliki satu nilai yaitu null. Dalam sistem keamanan null, Null adalah tipe akar mandiri, semua tipe yang menerima null kompatibel dengan null.
String? name = null;
Null n = null;
Code language: JavaScript (javascript)