Флаттер: как вернуть данные?

#flutter #dart

#флаттер #дротик

Вопрос:

Это мой код. И я хочу вернуть свои данные memo_list . memo_list иметь значение в коде here .

Но memo_list возвращает пустое значение.

Я не знаю, почему данные были удалены.

   List fetchMemosFromAllUsers(List<dynamic> users){
    List memo_list = List();

    for(final user in users){
      FirebaseFirestore.instance.collection("MEMO").where(KEY_USERKEY, isEqualTo: user).get().then((docs) {
        if(docs.docs.isNotEmpty){
          for(int i = 0; i < docs.docs.length; i  ){
            memo_list.add(docs.docs[i].data());         <-------here
          }
        }
      });
    }
    return memo_list;
  }
  

Ответ №1:

Вы не ждете возвращения будущего. memo_list возвращается до выполнения .then() , поэтому memo_list всегда будет пустым.

Попробуйте

   Future<List> fetchMemosFromAllUsers(List<dynamic> users) async {
    List memo_list = List();

    for(final user in users){
      await FirebaseFirestore.instance.collection("MEMO").where(KEY_USERKEY, isEqualTo: user).get().then((docs) {
        if(docs.docs.isNotEmpty){
          for(int i = 0; i < docs.docs.length; i  ){
            memo_list.add(docs.docs[i].data());         <-------here
          }
        }
      });
    }
    return memo_list;
  }