Reputation: 5101
I am trying to create a list with items loaded from a remote server on a screen.
Container(
child: FutureBuilder(
future: fetchClinicas(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.length,
shrinkWrap: true,
itemBuilder: (BuildContext contex, index) {
Clinica clinica = snapshot.data[index];
return Text(
'${clinica.nombreClinica}',
style: TextStyle(fontSize: 20),
);
},
);
}
return CircularProgressIndicator();
},
),
),
Here you have both files:
clinica-api.dart
Future<List<Clinica>> fetchClinicas() async {
String url ="https://.../get_clinicas.php";
final response = await http.get(url);
return clinicaFromJson(response.body);
}
And the model class clinica.dart
import 'dart:convert';
List<Clinica> clinicaFromJson(String str) => List<Clinica>.from(json.decode(str).map((x) => Clinica.fromJson(x)));
String clinicaToJson(List<Clinica> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class Clinica {
Clinica({
this.idClinica,
this.nombreClinica,
this.direccionClinica,
this.telClinica,
this.emailClinica,
this.codClinica,
this.fechaIngresoClinica,
this.logoClinica,
});
String idClinica;
String nombreClinica;
String direccionClinica;
String telClinica;
String emailClinica;
String codClinica;
DateTime fechaIngresoClinica;
String logoClinica;
factory Clinica.fromJson(Map<String, dynamic> json) => Clinica(
idClinica: json["id_clinica"],
nombreClinica: json["nombre_clinica"],
direccionClinica: json["direccion_clinica"],
telClinica: json["tel_clinica"],
emailClinica: json["email_clinica"],
codClinica: json["cod_clinica"],
fechaIngresoClinica: DateTime.parse(json["fecha_ingreso_clinica"]),
logoClinica: json["logo_clinica"],
);
Map<String, dynamic> toJson() => {
"id_clinica": idClinica,
"nombre_clinica": nombreClinica,
"direccion_clinica": direccionClinica,
"tel_clinica": telClinica,
"email_clinica": emailClinica,
"cod_clinica": codClinica,
"fecha_ingreso_clinica": "${fechaIngresoClinica.year.toString().padLeft(4, '0')}-${fechaIngresoClinica.month.toString().padLeft(2, '0')}-${fechaIngresoClinica.day.toString().padLeft(2, '0')}",
"logo_clinica": logoClinica,
};
}
My issue is that I am getting an exception at line:
itemCount: snapshot.data.length,
Here the exception output:
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building FutureBuilder<List<Clinica>>(dirty, state: _FutureBuilderState<List<Clinica>>#8b603):
Class 'List<Clinica>' has no instance getter 'lenght'.
Receiver: Instance(length:3) of '_GrowableList'
Upvotes: 0
Views: 4797
Reputation: 7492
It seems that there is a misspelling with 'lenght'. I think that 'length' is right.
Upvotes: 7