【发布时间】:2020-03-27 19:15:48
【问题描述】:
假设我有一个类,其中包含在其初始化期间传递的函数:
class Caller {
final _controller = StreamController<int>();
Caller(void Function(int) callback) {
_controller.stream.listen(callback);
}
void send(int x) {
_controller.sink.add(x)
}
}
是否可以用另一个类方法初始化Caller,同时将其标记为final?
class Container {
final Caller _caller;
int _val = 0;
void _doSomething(int x) {
_val += x;
_caller.send(_val);
}
Container() : _caller = Caller(_doSomething);
}
Dart 抱怨 "Only static members can be accessed in initializers." 我知道在调用构造函数之前您无法访问未初始化的参数,但默认情况下“方法”实际上不是最终的吗?与其他属性不同,它不能动态修改。
那么,除了将_caller 标记为非final 并在构造函数中对其进行初始化之外,还有其他解决方法吗?
【问题讨论】:
标签: dart