1. List (Array Terurut)
List adalah kumpulan data yang tersusun secara terurut dengan indeks berbasis 0.
void main() {
// Inisialisasi List bertipe String
List<String> perangkat = ['Router', 'Switch', 'Access Point'];
perangkat.add('Firewall'); // Tambah 1 data
perangkat.addAll(['Server', 'PC']); // Tambah banyak data
perangkat.remove('Switch'); // Hapus elemen
print("Jumlah: ${perangkat.length}"); // 5
print("Elemen Pertama: ${perangkat.first}");
print("Elemen Terakhir: ${perangkat.last}");
}
2. Set (Koleksi Unik Tanpa Duplikat)
Set digunakan saat kita ingin menjamin bahwa setiap item dalam koleksi hanya muncul tepat 1 kali:
void main() {
Set<int> portUnik = {80, 443, 8080, 80, 443};
print(portUnik); // {80, 443, 8080} -> Duplikat dieliminasi otomatis
Set<int> portLain = {21, 22, 80};
print("Union (Gabungan): ${portUnik.union(portLain)}");
print("Intersection (Irisan): ${portUnik.intersection(portLain)}");
}
3. Map (Key-Value Pairs / Dictionary)
Map menyimpan data berpasangan antara Kunci (Key) dan Nilai (Value), format yang sangat umum saat memproses JSON API:
void main() {
Map<String, dynamic> konfigurasiRouter = {
'ip_address': '192.168.88.1',
'ssid': 'SMK_TKJ_HOTSPOT',
'channel': 6,
'isActive': true
};
print("IP Router: ${konfigurasiRouter['ip_address']}");
// Iterasi Map
konfigurasiRouter.forEach((key, val) {
print("Konfig [$key] -> $val");
});
}
4. Fitur Modern: Spread Operator, Collection-If & Collection-For
void main() {
bool isProduction = true;
var devTools = ['Debugger', 'Profiler'];
// Spread Operator (...) dan Collection-If
var appModules = [
'Auth Module',
'Dashboard Module',
if (!isProduction) ...devTools, // Disertakan hanya jika dev
for (int i = 1; i <= 3; i++) 'Plugin #$i' // Collection-For
];
print(appModules);
}