Flutter:如何在现有的Model Class中添加更多的json数据



我有一个场景,每当用户点击";加载更多";按钮

我面临的问题是,它将以前加载的数据替换为新数据。相反,它应该添加到Listview.Builder 的底部

Future fetchData() async{
var url = "url_goes_here";
final response = await http.get(url);
if (response.statusCode == 200) {
var resBody = jsonDecode(response.body);
var data = resBody['data'] as List;
if (data.isNotEmpty) {
setState(() {           
listVariable = data
.map<ModelClass>((json) => ModelClass.fromJson(json))
.toList();         
});
}
}
}
List<ModelClass> listVariable =List<ModelClass>(); //describe the object that way.

--------和--------

data.map<ModelClass>((json) {
listVariable.add(ModelClass.fromJson(jsonn));
} )).toList();         

您应该将接收到的数据添加到listVariable,而不是分配新值。试试这个代码:

final listVariable = <ModelClass>[];
...
Future fetchData() async {
var url = "url_goes_here";
final response = await http.get(url);
if (response.statusCode == 200) {
var resBody = jsonDecode(response.body);
var data = resBody['data'] as List;
if (data.isNotEmpty) {
final list = data.map<ModelClass>((json) => ModelClass.fromJson(json));
setState(() {
listVariable.addAll(list);  // HERE: addAll() instead of assignment
});
}
}
}

我自己就能找到答案。

setState(() {           
listVariable.addAll(data
.map<ModelClass>((json) => ModelClass.fromJson(json))
.toList();         
}));

@Mol0ko和@hasan karaman都是对的,但@Mol0ko当您有一组数据要将All添加到现有数据中时,这更有意义。

最新更新