首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >snapshot.hasData为真,但snapshot.data.length为空,颤动

snapshot.hasData为真,但snapshot.data.length为空,颤动
EN

Stack Overflow用户
提问于 2021-04-12 18:51:22
回答 1查看 200关注 0票数 0

我从一个返回一些数据的组件调用一个API,但问题是snapshot.hasDatatrue,而snapshot.data.length0。我是否(再次)错误地解析了数据?代码:

API调用服务组件:

代码语言:javascript
复制
Future<List<User>> getUsers() async {
    final response = await APIRequest(Method.GET, '/users');
    if (response.statusCode == 200) {
      var body = jsonDecode(response.body)['data'];
      print('this is the response body: ' + response.body); // it returns data completely
      List<User> users = [];
      body.map((e) {
        User user = User.fromJson(e);
        users.add(user);
      });
      return users;
    } else {
      print('Error occurred! Data is not fetched!');
    }
  }

用户列表组件:

代码语言:javascript
复制
Future<List<User>> _getUserList() async {
    var _userData = await APIcalls.instance.getUsers();
    return _userData;
  }

FutureBuilder<List<User>>(
                    future: _getUserList(),
                    builder: (context, snapshot) {
                      if (snapshot.hasData) {
                        print(snapshot.hasData.toString()); // returns true
                        print(snapshot.data.length); // returns 0
                        return ListView.builder(
                          shrinkWrap: true,
                          itemCount: snapshot.data.length,
                          itemBuilder: (context, index) {
                            print(snapshot.data.length);

                            return Text(snapshot.data[index].userId);
                          },
                        );
                      } else if (snapshot.hasError) {
                        return Text("${snapshot.error}");
                      }
                      return Container();
                    },
                  )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 19:45:11

试试这个:

代码语言:javascript
复制
 List<User> users = List.from(body).map((e) => User.fromJson(Map.from(e))).toList();
 return users;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67057077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档