【发布时间】:2020-11-05 17:12:18
【问题描述】:
我正在尝试创建一个列表,其中包含从屏幕上的远程服务器加载的项目。
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();
},
),
),
这里有两个文件:
clinica-api.dart
Future<List<Clinica>> fetchClinicas() async {
String url ="https://.../get_clinicas.php";
final response = await http.get(url);
return clinicaFromJson(response.body);
}
还有模型类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,
};
}
我的问题是我在行遇到异常:
itemCount: snapshot.data.length,
这里是异常输出:
════════ 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'
【问题讨论】:
-
'lenght' 对吗?我认为有一个拼写错误的“长度”。
-
@KuKu,你是对的,这就是问题所在,对不起我的英语
-
@KuKu,您介意将您的评论作为我问题的答案吗?还是我应该删除问题?