"_InternalLinkedHashMap<dynamic, Map<String, dynamic>>"不是"其他"的"Map<String, dy namic&g



我得到了这个奇怪的异常

'_InternalLinkedHashMap<dynamic,>>'不是'other'类型'Map<String,>'的子类型。

我不知道如何映射<String,>>不是Map<String类型的子类型,dynamic>>

第一次运行代码时,它可以很好地访问else部分。第二次,当它应该访问第一部分时,它产生了上面的异常。

Future addMeal(meal,mealName,date,cal,protein,carbs,fats) async{
List<dynamic> foodLog= List<dynamic>();
Map <String,dynamic> temp = Map();

await users.document(user.uid).get().then((doc) {
foodLog = doc.data['foodLog'];
int i = 0;
while(i<=foodLog.length-1) {
if (foodLog[i].containsKey(date)) {
temp = foodLog[i];
temp['$date']['$meal'].addAll({
mealName:{'cal':cal,'protein':protein,'carbs':carbs,'fats':fats}
});
foodLog[i] = temp;
break;
} else {
i++;
}
}
if(i==foodLog.length){
temp = {'$date':{'Breakfast':{},'Dinner':{},'Lunch':{},'Snacks':{}}};
temp['$date']['$meal'].addAll({
mealName:{'cal':cal,'protein':protein,'carbs':carbs,'fats':fats}
});
}
});
foodLog.add(temp);
print(foodLog);
return await users.document(user.uid).updateData({
'foodLog':foodLog
});

}

FoodLog输出:

{2021年8月3日:{早餐:{鱼柳:{碳水化合物:0.0,脂肪:1.7,蛋白质:20.08,卡路里:95}},晚餐:{},零食:{},午餐:{}}}

E/flutter (6596): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)]未处理异常:类型"_InternalLinkedHashMap<dynamic,>>"不是类型"Map<String,>' of 'other'

我认为您需要将您的项目转换为Map<String, Map<String, dynamic>>。那么它应该可以工作。

temp['$date']['$meal'].addAll({
mealName:{'cal':cal,'protein':protein,'carbs':carbs,'fats':fats}
} as Map<String, Map<String, dynamic>>);

相关内容

最新更新