Cheat Sheet Dart
Terakhir diperbarui
Hello World & struktur program
Setiap program Dart dimulai di fungsi main tingkat atas.
| Operasi | Sintaks |
|---|---|
| Titik masuk program | void main() { ... } |
| Mencetak satu baris | print("Hello, World!"); |
| Interpolasi string | print("Hi $name"); |
| Ekspresi dalam interpolasi | print("Sum: ${a + b}"); |
| Komentar | // this is a comment |
| Komentar beberapa baris | /* ... */ |
| Mengimpor library | import 'dart:math'; |
| Menjalankan file | dart run main.dart |
Variabel & tipe
Dart bertipe statis, tetapi bisa menyimpulkan tipe dengan var.
| Operasi | Sintaks |
|---|---|
| Variabel dengan tipe disimpulkan | var age = 30; |
| Tipe eksplisit | int age = 30; |
| Konstanta saat compile | const pi = 3.14; |
| Konstanta saat runtime | final name = getName(); |
| Tipe dasar | int, double, String, bool |
| Tipe dinamis | dynamic x = 5; |
| Konversi tipe | int.parse("42"), n.toString() |
| Memeriksa tipe | x is String, x as String |
Null safety
Tipe bersifat non-nullable secara default; tambahkan ? untuk mengizinkan null.
| Operasi | Sintaks |
|---|---|
| Non-nullable (default) | int count = 0; |
| Tipe nullable | String? name; |
| Akses null-aware | user?.name |
| Null-coalescing | name ?? "default" |
| Penugasan null-coalescing | name ??= "default"; |
| Memastikan tidak null | name! |
| Inisialisasi late | late String value; |
| Spread null-aware | [...?maybeList] |
String
String mendukung kutip tunggal, ganda, dan tiga kutip.
| Operasi | Sintaks |
|---|---|
| Panjang | s.length |
| Huruf besar / kecil | s.toUpperCase(), s.toLowerCase() |
| Interpolasi | "Total: $price" |
| Menggabungkan | "foo" + "bar" |
| Mengandung teks | s.contains("ell") |
| Diawali / diakhiri dengan | s.startsWith("he") |
| Memecah | "a,b,c".split(",") |
| Mengganti | s.replaceAll("a", "b") |
| Substring | s.substring(0, 3) |
| Menghapus spasi di tepi | s.trim() |
Collection (List, Map, Set)
Tiga tipe collection inti dengan sintaks literal.
| Operasi | Sintaks |
|---|---|
| Literal list | var nums = [1, 2, 3]; |
| Menambah ke list | nums.add(4); |
| Akses / panjang | nums[0], nums.length |
| Map / where | nums.map((n) => n * 2), nums.where((n) => n > 1) |
| Literal map | var ages = {"Ada": 30}; |
| Akses map | ages["Ada"] |
| Literal set | var ids = {1, 2, 3}; |
| Operator spread | var all = [...a, ...b]; |
| Collection if / for | [if (show) 1, for (n in xs) n] |
Alur kontrol
Kondisi ditulis di dalam tanda kurung; switch mendukung pattern.
| Operasi | Sintaks |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Ternary | var r = x > 0 ? "pos" : "neg"; |
| Switch | switch (n) { case 1: ...; default: ... } |
| For loop | for (var i = 0; i < 10; i++) { ... } |
| For-in loop | for (var item in items) { ... } |
| forEach | items.forEach((x) => print(x)); |
| While loop | while (x < 100) { ... } |
| Do-while | do { ... } while (x < 100); |
| Break / continue | break;, continue; |
Fungsi
Fungsi adalah first-class; sintaks arrow mempersingkat ekspresi tunggal.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan fungsi | int add(int a, int b) { return a + b; } |
| Fungsi arrow | int square(int x) => x * x; |
| Posisional opsional | void log(String m, [int? code]) { ... } |
| Parameter bernama | void box({int w = 0, int h = 0}) { ... } |
| Parameter bernama wajib | void box({required int w}) { ... } |
| Fungsi anonim | var f = (x) => x * 2; |
| Mengirim sebagai argumen | nums.map((n) => n * 2) |
| Typedef | typedef IntOp = int Function(int); |
Class & constructor
Class menyimpan state dan perilaku; constructor punya beberapa bentuk.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan class | class Point { int x; int y; } |
| Constructor | Point(this.x, this.y); |
| Constructor bernama | Point.origin() : x = 0, y = 0; |
| Membuat instance | var p = Point(1, 2); |
| Method | double dist() { ... } |
| Getter | int get area => w * h; |
| Inheritance | class Circle extends Shape { ... } |
| Memanggil super | super(args) |
| Class abstrak | abstract class Shape { ... } |
| Mengimplementasikan interface | class Dog implements Animal { ... } |
Async (Future / async-await)
Future mewakili nilai yang tersedia nanti; await berhenti sejenak sampai nilainya siap.
| Operasi | Sintaks |
|---|---|
| Fungsi async | Future<int> load() async { ... } |
| Menunggu future dengan await | var data = await load(); |
| Mengembalikan nilai | return 42; di dalam fungsi async |
| Jeda | await Future.delayed(Duration(seconds: 1)); |
| Menangani error | try { await load(); } catch (e) { ... } |
| Merangkai dengan then | load().then((v) => print(v)); |
| Menjalankan secara paralel | await Future.wait([a(), b()]); |
| Stream async | await for (var x in stream) { ... } |
Sintaks Dart yang paling sering kamu pakai, dalam satu halaman. Cheat sheet Dart ini adalah referensi cepat untuk inti bahasanya: variabel dan tipe, null safety, string, collection, alur kontrol, fungsi, class, serta future dan async/await yang kamu pakai untuk menulis aplikasi di balik Flutter.
Semua yang ada di sini adalah Dart standar dan berjalan di SDK resmi. Salin yang kamu butuhkan, atau coba setiap potongan kode langsung di playground Dart, tanpa perlu instalasi.
FAQ cheat sheet Dart
Apakah cheat sheet Dart ini gratis?
Ya. Cheat sheet Dart ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari operator null safety, method collection, atau pola async.
Bagaimana cara kerja null safety di Dart?
int count tidak pernah bisa berisi null. Untuk mengizinkan null, kamu menambahkan ? (String? name), lalu compiler memaksamu menangani kasus null. Ada operator yang membuatnya ringkas: ?. untuk akses null-aware, ?? untuk nilai cadangan, dan ! untuk memastikan sebuah nilai tidak null saat kamu yakin. Dengan begitu, error null tertangkap saat compile, bukan saat runtime.Apa itu Future dan bagaimana cara kerja async dan await?
Future mewakili nilai yang baru tersedia nanti, misalnya hasil panggilan jaringan. Menandai sebuah fungsi dengan async membuatmu bisa memakai await, yang menghentikan eksekusi sejenak sampai future selesai lalu memberimu nilainya. Jadi kamu menulis kode asinkron yang terbaca dari atas ke bawah seperti kode sinkron. Bungkus await dengan try/catch untuk menangani error.Bisakah saya berlatih Dart secara online?
Bisa. Buka playground Dart untuk menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu menginstal SDK. Kalau kamu ingin belajar terarah, kursus Dart interaktif gratis dari Coddy membawamu dari null safety dan collection sampai class dan async/await, langkah demi langkah.
Apakah cheat sheet ini cocok untuk pemula?
Cocok. Isinya disusun mulai dari topik yang paling umum (variabel, null safety, alur kontrol) sampai yang lanjutan (class, future, async/await), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai sisanya.