Materi
Tampilan Flutter tersusun dari widget yang saling bersarang membentuk pohon. runApp menerima widget akar, misalnya MaterialApp, yang sejak Flutter 3.16 memakai gaya Material 3 secara bawaan; di dalamnya ada Scaffold, lalu Column, lalu Text, dan seterusnya. Setiap widget adalah deskripsi imutabel tentang sebagian tampilan: field-nya final, dan untuk mengubah tampilan Flutter membuat widget baru, bukan menyunting yang lama. Metode build mengubah keadaan menjadi tampilan, dan framework boleh memanggilnya kapan saja, bahkan sekali per bingkai, sehingga build harus cepat dan bebas efek samping.
class KartuMenu extends StatelessWidget {
const KartuMenu({super.key, required this.nama, required this.harga});
final String nama;
final int harga;
@override
Widget build(BuildContext context) {
return Card(
child: ListTile(
title: Text(nama),
trailing: Text('Rp$harga'),
),
);
}
}StatelessWidget hanya bergantung pada nilai yang diberikan induknya, seperti KartuMenu di atas. Bila sebuah widget perlu mengingat sesuatu yang berubah karena ulah pengguna, misalnya angka penghitung atau kotak centang, pakai StatefulWidget. Ia terdiri dari dua kelas: widget imutabel yang membuat objek State lewat createState, dan kelas State yang menyimpan data yang berubah sekaligus menulis build. Widget bersifat sementara, sedangkan objek State bertahan di antara pemanggilan build.