JSON & Model Data
Mengubah teks JSON dari server menjadi object Dart dengan jsonDecode dan factory constructor fromJson.
JSON: bahasa data di internet
Server hampir selalu mengirim data dalam format JSON, yaitu teks dengan pola mirip Map dan List:
[
{"id": 1, "title": "Flutter 4 rilis"},
{"id": 2, "title": "Dart makin cepat"}
]
Teks seperti ini belum bisa dipakai langsung. Kita perlu mengubahnya menjadi object Dart yang rapi dan aman tipe.
Langkah 1: jsonDecode
import 'dart:convert';
final data = jsonDecode(teks) as List;
jsonDecode mengubah teks JSON menjadi List dan Map biasa. Kata as List menyatakan "saya tahu hasilnya berupa List".
Langkah 2: model
Buat class yang mewakili satu data. Di sini namanya Berita:
class Berita {
final int id;
final String judul;
const Berita({required this.id, required this.judul});
factory Berita.fromJson(Map<String, dynamic> json) {
return Berita(
id: json['id'] as int,
judul: json['title'] as String,
);
}
}
factory Berita.fromJson(...)adalah constructor khusus yang membuat Berita dari sebuah Map. DenganfromJson, kunci JSON ('title') dipetakan ke field Dart (judul).json['id'] as intmenegaskan tipenya. Jika servernya salah mengirim tipe, error muncul di sini, bukan jauh di tampilan.Map<String, dynamic>berarti kunci berupa teks dan nilainya bertipe apa saja.
Langkah 3: ubah semuanya sekaligus
final daftar = data
.map((e) => Berita.fromJson(e as Map<String, dynamic>))
.toList();
Hasilnya List<Berita> yang aman dipakai: daftar[0].judul. Pola jsonDecode → map(fromJson) → toList akan kamu ulang di hampir setiap aplikasi yang memakai internet.