Serialisasi Flutter / Dart Json
Saya baru mengenal Flutter dan Dart dan mencoba mengonversi beberapa aplikasi studio android untuk menggunakan flutter jika saya bisa. Saya mencoba mengurai beberapa json sederhana untuk mempelajari bagaimana semua fitur dart / flutter dapat membantu saya.
Struktur kelas yang ingin saya tulis adalah:
class Company extends Salinas {
final String name;
Company({this.name}) : super();
factory Company.fromJson(Map<String, dynamic> json) => _$CompanyFromJson(json); Map<String, dynamic> toJson() => _$CompanyToJson(this);
}
class Salinas {
final int id;
Salinas({this.id});
factory Salinas.fromJson(Map<String, dynamic> json) => _$SalinasFromJson(json); Map<String, dynamic> toJson() => _$SalinasToJson(this);
}
string json sederhana
{"id":1,"name":"Acme"}
dan:
print(company.id)is null
print(company.name) is Acme;
ketika saya melihat file Company.g.dart tidak ada referensi ke kelas diperpanjang Salinas? apakah ada cara untuk melakukan ini?
Saya jelas melewatkan sesuatu.
Jawaban
Anda perlu mendefinisikan properti kelas yang diperluas dalam konstruktor anak seperti ini:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
Setelah Anda akan melihat hasil ini:
print(company.id) is 1
print(company.name) is Acme;
class Company {
int id;
String name;
Company({this.id, this.name});
Company.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}
Atas dasar JSON yang Anda berikan, Anda harus membuat Model seperti di atas. Setelah itu, Anda dapat memetakan semuanya dengan mudah,
Company company = Company.fromJson(response);
dan kemudian Anda bebas untuk mencetak
print(company.id);
print(company.name);