flutter Dart常量-类型“_UnmodifiableSet”不是类型“Map”的子类型

j8ag8udp  于 2023-03-03  发布在  Flutter
关注(0)|答案(1)|浏览(124)

使用Bloc编写flutter应用程序。示例中经常使用的模式是对状态对象使用const构造函数,以便它们是不可变的。我的状态中的一个属性是Map〈string,double〉,我在将其初始化为常量时遇到了问题。错误是:
type '_UnmodifiableSet<Map<String, double>>' is not a subtype of type 'Map<String, double>'
下面是抛出错误的类构造函数:

class MyState extends Equatable {
  final List<Popup> popups;
  final Map<String, double> distance;

  const MyState ([
    popups = const <Popup>[],
    distance = const <Map<String, double>>{}
  ]) : this.popups = popups, this.distance = distance;

如果MyState初始化时没有distance的值,我希望它是一个空对象。列表初始化器Popup可以工作。

iq3niunx

iq3niunx1#

这段代码可以帮助您理解(如何指定哈希Map创建):

void main() {
  Map<String, double> distance;
  distance = Map<String, double>();
  distance = const <String, double>{};
}

附言
您的代码不正确。
附言附言。
此代码指定哈希集的创建。

void main() {
  final set = <Map<String, double>>{};
  print(set.runtimeType);
}

结果:

_CompactLinkedHashSet<Map<String, double>>

也就是<Map<String, double>SetSet<Map<String, double>>)。

相关问题