使用列表作为地图中的键

use*_*ser 5 dart

print({[1,2]:3}[[1,2]])打印null.这显然是出乎意料的.

是否有一个幸福的解决方法还是我必须建立一个新的列表类级/包装,并给它一个适当的operator==hashCode

lrn*_*lrn 6

Dart中的列表不具有基于其元素的相等性.

您可以使用Map具有自定义相等功能的a.在定义的列表上有相同的package:collection/equality.dart,所以你可以这样做:

import "package:collection/equality.dart";
main() {
  const eq = const ListEquality();
  var map = new Map(equals: eq.equals, hashCode: eq.hash, isValidKey: eq.isValidKey);
  map[[1,2]] = 42;
  print(map[[1,2]]);
}
Run Code Online (Sandbox Code Playgroud)

但是,这仍然不允许您使用地图文字.