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中的整个映射?是否要添加所有结果?