Flutter 类型';未来<;地图<;字符串,动态>&燃气轮机;函数()';用于';对于';回路必须实现可调颤振

Flutter 类型';未来<;地图<;字符串,动态>&燃气轮机;函数()';用于';对于';回路必须实现可调颤振,flutter,async-await,future,Flutter,Async Await,Future,从数据库中获取值后,我试图从Future返回Map,但无法打印值。访问值时出现以下错误 在“for”循环中使用的类型“Future Function()”必须实现Iterable。 下面是简单的代码 类ChefDishes扩展StatefulWidget{ @凌驾 _ChefdishessState createState()=>\u ChefDishesState(); } 类_ChefDishesState扩展状态{ @凌驾 小部件构建(构建上下文){ var_chefDishes=Dat

从数据库中获取值后,我试图从
Future
返回
Map
,但无法打印值。访问值时出现以下错误

在“for”循环中使用的类型“Future Function()”必须实现Iterable。 下面是简单的代码

类ChefDishes扩展StatefulWidget{
@凌驾
_ChefdishessState createState()=>\u ChefDishesState();
}
类_ChefDishesState扩展状态{
@凌驾
小部件构建(构建上下文){
var_chefDishes=DatabaseService().getChefDishList;
返回脚手架(
.....
纵队(
儿童:[

对于(在_chefDishes中的var项)/您没有从未来获得结果。您正在尝试使用未来,而不是其中的映射

另外,您正在构建函数中启动这个getChefDishList,这是一个很大的禁忌

有一种方法可以解决此问题:

class _ChefDishesState extends State<ChefDishes> {
  Map<String, dynamic> _chefDishes;
  @override
  initState() {
    startAsyncInit();
  }
  Future startAsyncInit() async {
    setState(() {
      _chefDishes = await DatabaseService().getChefDishList;
    });
  }
  @override
  Widget build(BuildContext context) {
    
     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']),
                ]),
            ],
          )
}

class\u chefdishessState扩展状态{
地图(chefDishes);;
@凌驾
initState(){
startAsyncInit();
}
Future startAsyncInit()异步{
设置状态(){
_chefDishes=await DatabaseService().getChefDishList;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
.....
纵队(
儿童:[

对于(支票中的var项目)//使用
forEach

  var usrMap = {"name": "Mr MKM", 'Email': 'moumit.mondal@gmail.com'}; 
  usrMap.forEach((k,v) => print('${k}: ${v}')); 

您是否尝试先初始化映射?例如:Map chefDishes=new Map();是否确实要覆盖forEach中的整个映射?是否要添加所有结果?