我试图从数据库中的某个电影标题中获取子级数据,但是我只能获得“ Datasnapshot实例”的输出。
这是数据库的设置,其中包含我要存储在列表中的突出显示的信息:
我尝试使用以下代码未成功:
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;
}
注意:我正在传递选定的电影名称,所以我只从用户选择的电影中获取子级信息。这部分是正确的,如果用户单击Batman的列表图块,则标题将传递到此getMovieDetails()函数。
请尝试以下操作:
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");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句