dart语言:Map<;对象,字符串>;如何添加新的一对?

dart语言:Map<;对象,字符串>;如何添加新的一对?,map,dart,Map,Dart,鉴于: 相反,我得到的是: mListUser[socket]="string"; 我做错了什么?也许有帮助 type 'String' is not a subtype of type 'int' of 'index'. 也许会有帮助 out: Instance of 'Collections' arg2 out: Instance of 'Collections' arg1 arg2 final test=Map(); 测试。putIfAbsent('58',()=>56); 如果键

鉴于:

相反,我得到的是:

mListUser[socket]="string";
我做错了什么?

也许有帮助

type 'String' is not a subtype of type 'int' of 'index'.
也许会有帮助

out: Instance of 'Collections' arg2
out: Instance of 'Collections' arg1
arg2
final test=Map();
测试。putIfAbsent('58',()=>56);

如果键不存在,它将被放入映射中。

根据错误,我会说
mListUser
是一个
列表,而不是
映射。这是你复制的原始、真实的代码吗?我在使用列表之前忘了更改名称,我在防御性地使用地图。正如Gero所示,我认为我的做法是正确的,我猜我用作键的对象中有错误,顺便说一句,它与我从Chathandler类(这里的源代码)上的onConnection中获得的Websocket是一样的,没有任何进一步的信息,我只能固执地重申:错误消息说,您试图将字符串分配给名为“index”的变量或参数,该变量或参数必须是整数。如果这是真实的代码,那么这个错误可能根本与地图无关。我发现了问题或找到了它。因为我用的是“飞镖:io”;而不是导入“dart:html”;在第一种情况下,WebSocket似乎是一个抽象类,尝试将其用作键是行不通的,至少在这种情况下是行不通的。请注意,在带有“dart:html”的项目中;正如上面GeroI am使用“Map”(事件是一个随机类)所建议的那样,一切都按预期工作。每次我添加一个新的密钥对时,密钥(DateTime)都被正确添加,但列表在所有密钥中都被替换。有什么帮助吗?有什么想法吗?
Map<Object,String> map1= new Map<Object,String>();
Collections c = new Collections(); //some random class

map1[new Collections()]="arg1";
map1[c]="arg2";

map1.forEach((k,v)=>print("out: $k $v"));
print(map1[c]);
out: Instance of 'Collections' arg2
out: Instance of 'Collections' arg1
arg2
final test = Map<String, int>();
test.putIfAbsent('58', () => 56);