RangeError (index): недопустимое значение: диапазон допустимых значений пуст: 34 - PullRequest
0 голосов
/ 19 октября 2019

РЕДАКТИРОВАТЬ :

Так как данные теперь отображаются, если я делаю 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?

Потому что именно это, я думаю, решит мою проблему.

1 Ответ

0 голосов
/ 21 октября 2019

Похоже, вы не ждете данных здесь:

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

Используйте await, чтобы выполнить это

getFeed = await getFeedAll();
await this.getUsers();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...