Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 嵌套映射是否可行?_Flutter_Dart - Fatal编程技术网

Flutter 嵌套映射是否可行?

Flutter 嵌套映射是否可行?,flutter,dart,Flutter,Dart,我正在尝试创建贴图对象 我是dart新手,正因为如此,我尝试它就像在JS中一样,但这似乎是不正确的 Map<String, Map> superMap = new Map(); superMap["subMap"] = new Map(); superMap["subMap"].addAll(StringStringMap1); superMap["subMap"].addAll(StringStringMap2); 您的语法不惯用,但正确 您发布的代码有效(假设stringmap

我正在尝试创建贴图对象

我是dart新手,正因为如此,我尝试它就像在JS中一样,但这似乎是不正确的

Map<String, Map> superMap = new Map();
superMap["subMap"] = new Map();
superMap["subMap"].addAll(StringStringMap1);
superMap["subMap"].addAll(StringStringMap2);

您的语法不惯用,但正确

您发布的代码有效(假设
stringmap1
stringmap2
Map
对象)。我可以成功运行以下代码(如所述,您需要将代码包装在函数中,此处
main
作为入口点):

main(){
地图超级地图=新地图();
超级地图[“子地图”]=新地图();
超级地图[子地图].addAll({1:2});
超级地图[子地图].addAll({2:2});
印刷(超级地图);
}
我想借此机会与您分享一些编写Dart代码的惯用方法:

  • 您可以省略
    new
    ,因为它不是必需的

  • 此外,您可以使用
    Map
    literals来构建映射。开始时的空地图分配如下所示:

  • main() {
    
        Map<String, Map> superMap = new Map();
        superMap["subMap"] = new Map();
        superMap["subMap"].addAll(StringStringMap1);
        superMap["subMap"].addAll(StringStringMap2);
    
    }
    
Map superMap={};
  • 此外,对于以后未重新分配的变量,可以使用
    final
    关键字:
final superMap={};//编译器可以根据指定的值推断类型。
  • 使用
    Map
    literal,您还可以将
    subMap
    的其他作业移动到原始作业中

  • 此外,您还可以展开其他地图,从而将
    addAll
    分配移动到原始分配

最终结果如下所示。如果这对你仍然不起作用,我可以回到你身边:

main(){
最终的StringMap1={'1':'2'},StringMap2={'2':'2'};
最终超级地图={
“subMap”:{
…StringMap1,
…StringMap2,
}
};
印刷(超级地图);
}

以下代码没有问题:

Map<String, Map> superMap = new Map();
superMap["subMap"] = new Map();
superMap["subMap"].addAll(StringStringMap1);
superMap["subMap"].addAll(StringStringMap2);
因此,请检查您的
stringmap1
stringmap2
是否正确

但是我怀疑您没有在函数中创建代码。因此,请在
main
中尝试您的代码,如下所示:

main() {

    Map<String, Map> superMap = new Map();
    superMap["subMap"] = new Map();
    superMap["subMap"].addAll(StringStringMap1);
    superMap["subMap"].addAll(StringStringMap2);

}
main(){
地图超级地图=新地图();
超级地图[“子地图”]=新地图();
超级地图[“子地图”].addAll(StringMap1);
超级地图[“子地图”].addAll(StringMap2);
}
请注意,在Dart中,代码的入口点是
main()
函数。不能像在
Javascript
中那样在函数外执行该行

main() {

    Map<String, Map> superMap = new Map();
    superMap["subMap"] = new Map();
    superMap["subMap"].addAll(StringStringMap1);
    superMap["subMap"].addAll(StringStringMap2);

}