所以我看到的代码是这样的:

class Whatever {
  final String name;
  const Whatever(this.name);
}

构造函数被标记为const这一事实改变了什么?有什么效果吗?

我读过这样一篇文章:

对于要作为编译时常量的变量,请使用const.如果 常量变量位于类级别,将其标记为静电常量. (实例变量不能为常量.)

但是对于类构造函数来说,这似乎没有意义.

推荐答案

  • 构造函数不能有构造函数体.
  • 所有成员都必须是最终成员,并且必须在声明时或通过构造函数参数或初始值设定项列表进行初始化.
  • 您可以使用该类的实例,其中只允许使用常量(注释、可选参数的默认值,…)
  • 您可以创建像static const someName = const Whatever()这样的常量字段;

如果类没有常量构造函数,则不能用于初始化常量字段.我认为在构造函数中指定这一点是有意义的.您仍然可以在运行时使用new Whatever()创建实例,也可以添加工厂构造函数.

另请参阅

"旧式"(仍然有效)枚举是如何使用const的一个很好的例子

Dart相关问答推荐

异类列表中函数类型不变性的解决方法

dart 日期时差(分钟)

Dart 3.3接口字段类型升级不起作用

寻找provider context 的flutter问题

VSCode Flutter Dart 启动慢的建议

在`lib`文件夹中使用`src`子文件夹有什么好处吗

dart 中 call() 的实现是什么?

如何在Flatter中将图表线 colored颜色 更改为自定义 colored颜色 代码值

Flatter BLoC-如何将参数传递给事件?

如何在Dart中处理JSON

将Flutter的 PageView 与屏幕左侧对齐

Flutter 中 ListView.builder 中的反向列表

如何在 showModalBottomSheet 中设置状态

如何判断 Dart NNBD 中的泛型类型是否可以为空?

如何循环遍历元素列表

谷歌的 Dart 编程语言的作用是什么?

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

Dart,对泛型的限制?

有没有办法取消dartfuture ?

Dart 字符串比较器