当前位置: 首页 > 知识库问答 >
问题:

"_InternalLinkedHashMap不是其他类型的"Map"的子类型"Map"

闾丘选
2023-03-14

我遇到了一个奇怪的例外

'_InternalLinkedHashMap

我不知道怎么画地图

第一次运行代码时,它可以正常工作,因为它可以访问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/flatter(6596):[错误:flatter/lib/ui/ui_dart_state.cc(177)]未处理的异常:类型'\u InternalLinkedHashMap

共有1个答案

苏涛
2023-03-14

我认为你需要将你的物品投射到地图上

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

 类似资料: