【发布时间】:2020-12-14 23:51:16
【问题描述】:
在从数据库中获取值后,我试图从Future 返回Map,但我无法打印这些值。访问值时出现以下错误
The type 'Future<Map<String, dynamic>> Function()' used in the 'for' loop must implement Iterable.
下面是简单的代码。
class ChefDishes extends StatefulWidget {
@override
_ChefDishesState createState() => _ChefDishesState();
}
class _ChefDishesState extends State<ChefDishes> {
@override
Widget build(BuildContext context) {
var _chefDishes = DatabaseService().getChefDishList;
return Scaffold(
.....
Column(
children: [
for (var item in _chefDishes) // <---- E R R O R I S H E R E
ListView(children: [
Text(item['dishname']),
Text(item['dishPrice']),
]),
],
)
}
DatabaseService类
class DatabaseService {
Future<Map<String, dynamic>> getChefDishList() async {
Map<String, dynamic> chefDishes;
var result =
await Firestore.instance.collection('dish').("chefID", isEqualTo: uid).getDocuments();
result.documents.forEach((eachResult) {
chefDishes = eachResult.data;
});
return chefDishes;
}
}
【问题讨论】:
-
您是否尝试过先初始化地图?像这样: Map
chefDishes = new Map (); -
你真的想覆盖你的 forEach 中的整个 Map 吗?您不想添加所有结果吗?
标签: flutter async-await future