我试图创建一个不可变的类,因为它是EventArgs
类的一种。我想知道如何创建const
和immutable
字段。这是我目前所拥有的:
import 'package:meta/meta.dart';
@immutable
class ConnectedDevicesChangedEventArgs {
final Iterable<String> devices;
const ConnectedDevicesChangedEventArgs(Iterable<String> d)
: devices = const List.unmodifiable(d); // error on const
}
我收到一个错误消息:
正在调用的构造函数不是const构造函数。请尝试从构造函数调用中移除“const”。dartconst_with_non_const
本人有以下要求:
- 任何访问
EventArgs
类的人都不允许更改devices
- 不允许访问
EventArgs
类的任何人在devices
中添加/删除任何内容 devices
永远不会改变
由于只有一个final
变量,因此将此构造函数设置为const
是否是一个好的做法?
我读过这篇文章:https://dart.dev/guides/language/language-tour#constant-constructors
1条答案
按热度按时间46qrfjad1#
一个
final List.unmodifyable()
既不能被更改为一个不同的列表,也不能修改列表本身。但是,它不能满足Dart对
const
构造函数的要求,即整个示例可以在编译时计算。在这种情况下,只需省略
const
关键字。