我创建了一个闭包的文字映射,类似于:

Map<String, Function> mapOfFuncs = {
  'foo': (a, b, c) => ... ,
  'bar': (a, b, c) => ... ,
   ...
}

到目前为止一切正常.然后我想制作这个 map const,因为它在我的程序中是全局的,不应该被修改.

const Map<String, Function> MAP_OF_FUNCS = const {
  'foo': (a, b, c) => ... ,
  'bar': (a, b, c) => ... ,
   ...
}

Dart扼杀了这一点,因为 map 中的文字闭包不是const.

在Dartpad上:https://dartpad.dartlang.org/817d2cfd141b0a56fc7d

我原以为字面上的闭包是const.有没有办法让他们这样做呢?

推荐答案

常量表达式中不支持闭包.有一个未解决的问题,即第https://github.com/dart-lang/sdk/issues/4596期和第https://github.com/Pajn/dep-const-function-literals/issues/1

如果改为创建静态函数,则可以在常量映射文本中引用它们,但当前无法内联定义它们.

Dart相关问答推荐

列表、捕获和...REST";元素的模式匹配

如何通过点击 BottomNavigationBarItem 以编程方式打开Drawer抽屉?

Flutter pod 安装问题 - # 的未定义方法 `each_child'

Flutter:Firebase FieldValue.serverTimestamp() 到 DateTime 对象

Flutter ButtonRow 填充

多级异步代码中的 Dart 错误

了解Dart private class

Flutter:并非所有本地化代表都支持应用程序的语言环境

Package:flutter/src/widgets/overlay.dart':Failed assertion: line 133 pos 12: "_overlay != null"

如何在组件类中获取 ngForm 变量引用?

如何在imageprovider类型中传递图像资源?

如何仅从 DateTime.now() 中提取时间;

什么时候在 Dart 中使用 num

错误:default constructor is already defined

将符号转换为字符串

Dart 工厂构造函数 - 它与const构造函数有何不同

如何在 Dart 中尚不存在的目录 struct 中创建文件?

可选参数的默认值必须是常量

如何从 Dart 中的字符串中删除换行符?

Angular.js 和 Angular.dart 的区别?