RangeError(索引):无效值:有效值范围为空:34

问题描述 投票:0回答:1

编辑

因为错误之后我现在执行hot reload,所以现在显示数据。我假设我的Future中未包含的其他FutureBuilder会触发该错误。

这里是实际功能:

     List<Feed> feedList = [];
      List<User> userList = [];

     @override
      void initState() {
        super.initState();

        getFeed = getFeedAll();
        this.getUsers();
      }

 Future<List<Feed>> getFeedAll() async {
    var res = await http.get(
        Uri.encodeFull(APIServices.httpDomain + APIServices.postGetAll),
        headers: {"Authorization": "Bearer " + Constants.token});

    if (res.statusCode == 200) {
      var data = json.decode(res.body);
      this.getUsers();
      feedList = data.map<Feed>((json) => Feed.fromJson(json)).toList();
    }

    return feedList;
  }

  Future<List<User>> getUsers() async {
    var res = await http.get(
        Uri.encodeFull(APIServices.httpDomain + APIServices.usersAll),
        headers: {"Authorization": "Bearer " + Constants.token});

    if (res.statusCode == 200) {
      var data = json.decode(res.body);

      userList = data.map<User>((json) => User.fromJson(json)).toList();
    }

    return userList;
  }



  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getFeed,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Container(
              padding: EdgeInsets.all(10),
              child: feedListWidget(snapshot.data));
        } else {
          return Container(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,
            child: Center(
              child: Container(
                width: 50,
                height: 50,
                child: CircularProgressIndicator(),
              ),
            ),
          );
        }
      },
    );
  }

现在,我正在userList小部件中使用feedListWidget

我很确定getUsers()会触发该错误。

如何在getUsers()中包含FutureBuilder

因为这是我认为可以解决我的问题的方法。

flutter dart flutter-layout flutter-test
1个回答
0
投票

似乎您不在这里等待数据:

getFeed = getFeedAll();

使用await执行该操作

getFeed = await getFeedAll();
© www.soinside.com 2019 - 2024. All rights reserved.