Materi
Aplikasi Flutter ditulis dengan Dart. Program Dart dimulai dari fungsi main, dan print mencetak satu baris. Variabel dibuat dengan var bila tipenya cukup ditebak dari nilai awal, atau dengan menulis tipenya langsung: int untuk bilangan bulat, double untuk pecahan, String untuk teks, dan bool untuk benar atau salah. final berarti variabel hanya boleh diisi sekali, sedangkan const berarti nilainya sudah harus diketahui saat kompilasi. Di dalam teks, $nama dan ${ekspresi} menyisipkan nilai.
void main() {
var kota = 'Makassar'; // tipe String ditebak dari nilainya
int jumlah = 3;
double berat = 1.5;
String? catatan; // boleh null; tanpa nilai awal isinya null
print('$kota ${jumlah * 2} ${berat * 2}'); // Makassar 6 3.0
print(catatan ?? '-'); // -
print(7 / 2); // 3.5
print(7 ~/ 2); // 3
}Sejak Dart 3, setiap tipe tidak boleh null kecuali diberi tanda tanya. String nama tidak pernah null; String? catatan boleh null. Analyzer Dart memeriksa ini saat kode ditulis, sebelum aplikasi berjalan, sehingga memanggil catatan.length pada String? langsung ditolak karena nilainya mungkin null. Ada tiga alat untuk nilai yang mungkin null. a ?? b memberi a bila a tidak null, selain itu b. a?.length memberi null bila a null, tanpa galat. a! menyuruh analyzer menganggap a tidak null; bila ternyata null, aplikasi berhenti saat berjalan. Setelah variabel lokal diisi nilai bukan null, Dart memperlakukannya sebagai tidak null sampai diubah lagi.