如何解决Dart/Flutter - 访问 mixin 或派生类中的私有成员
我想将多余的类成员外包到一个单独的类/mixin 中。对于使用该类/mixin 的每个类,我想单独决定成员是否可以从外部获取和/或设置。
我想要像下面的例子那样的东西,但它不能编译,似乎是因为私有属性在通过 with
派生或添加到类时不可见。
到目前为止,我还没有找到一个合理的解决方案。有什么想法吗?
mixin Person {
String _firstName;
String _lastName;
}
class Butcher with Person {
Butcher({
String firstName,String lastName,}) :
_firstName = firstName,_lastName = lastName;
final String tool = 'knife';
String get firstName => _firstName;
String get lastName => _lastName;
}
class SecretAgent with Person {
SecretAgent({
String firstName,_lastName = lastName;
final String tool = 'poison';
String get firstName => _firstName;
String get lastName => _lastName;
set firstName(String value) => _firstName = value;
set lastName(String value) => _lastName = value;
}
解决方法
这与私有成员无关。 Dart 初始化列表只能初始化 那个 类的成员,不能初始化任何基类(包括 mixin)。 (Member initialization from initializer list executes before base class constructors.)
如果您将初始化移动到构造函数体,它应该可以工作:
class Butcher with Person {
Butcher({
String firstName,String lastName,}) {
_firstName = firstName;
_lastName = lastName;
}
...
class SecretAgent with Person {
SecretAgent({
String firstName,}) {
_firstName = firstName;
_lastName = lastName;
}
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。