Serialización Flutter / Dart Json
Soy nuevo en Flutter y Dart y estoy tratando de convertir alguna aplicación de estudio de Android para usar flutter si puedo. Estoy tratando de analizar un json simple para aprender cómo pueden ayudarme todas las funciones de dardo / aleteo.
La estructura de clases en la que quiero escribir es:
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);
}
la cadena json es simple
{"id":1,"name":"Acme"}
y:
print(company.id)is null
print(company.name) is Acme;
cuando miro el archivo Company.g.dart no hay ninguna referencia a la clase extendida Salinas? ¿Hay alguna forma de hacer esto?
Claramente me estoy perdiendo algo.
Respuestas
Necesita definir propiedades de clase extendidas en el constructor hijo de esta manera:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
Después verá este resultado:
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;
}
}
Sobre la base de JSON que ha proporcionado, debería haber creado un modelo como el anterior. Después de eso, puede mapear todo de manera bastante conveniente,
Company company = Company.fromJson(response);
y luego eres libre de imprimir
print(company.id);
print(company.name);