Как получить значение дочерних данных из базы данных firebase? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь получить данные о дочерних элементах из определенного заголовка mov ie в базе данных, но могу получить только вывод «Экземпляр снимка данных».

Вот настройка БД с выделенной информацией, которую я пытаюсь сохранить в списке: enter image description here

Я безуспешно пытался использовать следующий код:

  Future<List<String>> getMovieDetails(String movieName) async {
    DataSnapshot movies = await DBRef.child("Movies").child(movieName).once().then((DataSnapshot datasnapshot)
    {
      print(datasnapshot.value.toString());
    });
    var moviesMap = Map<String, dynamic>.from(movies.value);
    List<String> moviesList = [];
    moviesMap.forEach((key, value){
      moviesList.add(key);
      print('My-Key $key');
      print('Movie List: $moviesList');
    });
    return moviesList;
  }

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

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Попробуйте следующее:

  Future<List<String>> getMovieDetails(String movieName) async {
    DataSnapshot movies = await FirebaseDatabase.instance
        .reference()
        .child("Movies")
        .child(movieName)
        .once();
    var moviesMap = Map<String, dynamic>.from(movies.value);
    List<String> moviesList = [];
    moviesMap.forEach((key, value) {
      moviesList.add(value);
      print('My-Key $key');
      print('My-Value $value');
    });
    return moviesList;
  }
}

Вам не нужно использовать then(), так как вы используете await. Также, когда вы вызываете этот метод, вам нужно сделать, например:

await getMovieDetails("Batman");
0 голосов
/ 06 мая 2020

Я сделаю приведенный выше ответ правильным, но самая большая проблема была, когда я это сделал:

moviesList.add(key)

Когда это должно быть:

 moviesList.add(value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...