Flutter 如何向现有的模型类添加更多的json数据?
我有一个场景,当用户点击“加载更多”按钮时,会反复调用下面的函数 我面临的问题是,它将以前加载的数据替换为新数据。相反,它应该添加到Listview.Builder的底部Flutter 如何向现有的模型类添加更多的json数据?,flutter,Flutter,我有一个场景,当用户点击“加载更多”按钮时,会反复调用下面的函数 我面临的问题是,它将以前加载的数据替换为新数据。相反,它应该添加到Listview.Builder的底部 Future fetchData() async{ var url = "url_goes_here"; final response = await http.get(url); if (response.statusCode == 200) { var resBody =
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();
});
}
}
}
Future fetchData()异步{
var url=“url\u转到这里”;
最终响应=等待http.get(url);
如果(response.statusCode==200){
var resBody=jsondCode(响应.body);
var data=resBody['data']作为列表;
if(data.isNotEmpty){
设置状态((){
listVariable=数据
.map((json)=>ModelClass.fromJson(json))
.toList();
});
}
}
}
您应该将收到的数据添加到列表变量中,而不是分配新值。请尝试以下代码:
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
});
}
}
}
final listVariable=[];
...
Future fetchData()异步{
var url=“url\u转到这里”;
最终响应=等待http.get(url);
如果(response.statusCode==200){
var resBody=jsonDecode(response.body);
var data=resBody['data']作为列表;
if(data.isNotEmpty){
最终列表=data.map((json)=>ModelClass.fromJson(json));
设置状态(){
listVariable.addAll(list);//此处:addAll()代替赋值
});
}
}
}
List listVariable=List()//这样描述对象。
--------及---------
data.map((json){
add(ModelClass.fromJson(jsonn));
})。toList();
我能自己找出答案
setState(() {
listVariable.addAll(data
.map<ModelClass>((json) => ModelClass.fromJson(json))
.toList();
}));
setState((){
listVariable.addAll(数据
.map((json)=>ModelClass.fromJson(json))
.toList();
}));
@Moloko和@hasan karaman都是对的,但是@Moloko
如果有一组数据要全部添加到现有数据中,则更有意义。我不认为将对象逐个添加到map()回调中的列表中是个好主意。最好先将数据映射到Iterable,然后使用addAll()。我已经知道了。但我给出了不同的答案。但如果他想定义条件,这可能更有意义。
data.map<ModelClass>((json) {
listVariable.add(ModelClass.fromJson(jsonn));
} )).toList();
setState(() {
listVariable.addAll(data
.map<ModelClass>((json) => ModelClass.fromJson(json))
.toList();
}));