Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何向现有的模型类添加更多的json数据?_Flutter - Fatal编程技术网

Flutter 如何向现有的模型类添加更多的json数据?

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 =

我有一个场景,当用户点击“加载更多”按钮时,会反复调用下面的函数

我面临的问题是,它将以前加载的数据替换为新数据。相反,它应该添加到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();         

          });
        }
    }

}
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();         

          }));