【问题标题】:Dart const - type '_UnmodifiableSet<Map<String, double>>' is not a subtype of type 'Map<String, double>'Dart const - 类型 '_UnmodifiableSet<Map<String, double>>' 不是类型 'Map<String, double>' 的子类型
【发布时间】:2021-04-21 06:43:03
【问题描述】:

使用 Bloc 编写 Flutter 应用。在示例中经常使用的一种模式是对状态对象使用 const 构造函数,以便它们是不可变的。我所在州的属性之一是 Map ,我无法将其初始化为 const。错误是:

type '_UnmodifiableSet&lt;Map&lt;String, double&gt;&gt;' is not a subtype of type 'Map&lt;String, double&gt;'

这是抛出错误的类构造函数:

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 有效。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

    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>>
    

    这是Set 中的&lt;Map&lt;String, double&gt; (Set&lt;Map&lt;String, double&gt;&gt;)。

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 1970-01-01
      • 2021-06-28
      • 2021-11-07
      • 2023-04-02
      • 2021-10-06
      • 2019-08-07
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多