将 int 分配给嵌套的 Map<String,动态>在错误中解决:类型 'int' 不是类型 'Null' 的子类型



我得到以下错误

类型"int"不是"value"的类型"Null"的子类型

使用此代码剪切

Map<String, dynamic> test = {
"meta": {
"age": null,
"gender": null,
"height": null,
"weight": null,
},
"test": "test"
};
test["meta"]["age"] = 20;

当我已经指定test["meta"]是动态的时,为什么dart认为test["meta"]["age"]具有类型Null

如何在不必进一步键入Map的情况下为test["meta"]["age"]分配一个整数值?

地图的类型由您在其中输入的内容决定。是的,对于地图Test,我们根据提供的类型提示获得正确的地图类型。但内部Map定义为:

{
"age": null,
"gender": null,
"height": null,
"weight": null,
}

不附带任何类型提示。因此Dart将根据初始化时提供的值自动确定此Map的类型。

您可以在此处强制执行以下操作:

Map<String, dynamic> test = {
"meta": <String, dynamic>{
"age": null,
"gender": null,
"height": null,
"weight": null,
},
"test": "test"
};

最新更新