Переход от будущего к будущему

#flutter

#трепетание

Вопрос:

я должен сделать что-то в своем приложении, что технически не так сложно, но я не знаю, как это сделать.

Мне нужно получить некоторые данные из firebase, а затем использовать эти данные для получения других данных из fireabse.

Это работает так. У меня есть организация, и из нее я получаю только UID пользователей. После того, как я распечатаю всю организацию (только идентификаторы пользователей), мне придется снова вызвать базу данных и получить имена людей, использующих идентификаторы пользователей, которые я получил ранее.

Вот что я пытался делать

 FutureBuilder(
  future: databaseReference.once(),
  builder: (context, AsyncSnapshot < DataSnapshot > snapshot) {
    List lists = [];
    if (snapshot.hasData) {
      lists.clear();
      Map < dynamic, dynamic > values = snapshot.data.value;
      values.forEach((key, values) {
        lists.add(values);
        print(values);
      }, );
      return new ListView.builder(
        primary: false,
        padding: EdgeInsets.only(left: 12.0, right: 12, bottom: 15, ),
        shrinkWrap: true,
        itemCount: lists.length,
        itemBuilder: (BuildContext context, int index) {

HERE I TRY TO CALL IT AGAIN WITH THE REZULT I GET
          FirebaseDatabase.instance.reference().child("Users/"   lists[index]["UID"].toString()   "/Name").once().then((DataSnapshot snapshot) {
            print('Data : ${snapshot.value}');
            aa = snapshot.value;
          });


          return Container(
            child: Text("$aa"));
        });
    }
    return Container(
      margin: const EdgeInsets.only(top: 300),
        child: CircularProgressIndicator());
  }),
 

Проблема, с которой я сталкиваюсь, заключается в том, что появляется отложенное значение null, если я показываю это в контейнере, и оно не появляется. Я думал о добавлении future builder внутри этого future builder. Что бы вы, ребята, порекомендовали?

Ответ №1:

Может быть, вы могли бы обрабатывать все выборки пользователей внутри поставщика Future / Stream и упростить свой виджет, просто представив список пользователей?

Пример:

 class MyWidget extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final AsyncValue<List<User>> asyncUsers = useProvider(allUsersProvider);
    return asyncUsers.when(
      data: (users) => ListView.builder(
        shrinkWrap: true,
        itemCount: users.length,
        itemBuilder: (BuildContext context, int index) => Container(
          child: Text(users[index].name),
        ),
      ),
      loading: () => Text('Loading...'),
      error: (error, trace) => Text('Something bad happened'),
    );
  }
}