我见过几个使用“extends”和“with”关键字扩展 ChangeNotifier 的模型示例。我不确定有什么区别。
class myModel extends ChangeNotifier {...}
class myModel with ChangeNotifier {...}
这两者有什么区别?我应该使用哪一个?
您可以使用extends
(继承)或with
(作为混合)。两种方式都可以让您访问notifyListeners()
中的方法ChangeNotifier
.
遗产
延伸ChangeNotifier
意思是ChangeNotifier
是超级类。
class MyModel extends ChangeNotifier {
String someValue = 'Hello';
void doSomething(String value) {
someValue = value;
notifyListeners();
}
}
如果您的模型类已经扩展了另一个类,那么您无法扩展ChangeNotifier
因为Dart不允许多重继承。在这种情况下,您必须使用 mixin。
Mixin
mixin 允许您使用 mixin 类的具体方法(即,notifyListeners()
).
class MyModel with ChangeNotifier {
String someValue = 'Hello';
void doSomething(String value) {
someValue = value;
notifyListeners();
}
}
因此,即使您的模型已经从另一个类扩展,您仍然可以“混合”ChangeNotifier
.
class MyModel extends SomeOtherClass with ChangeNotifier {
String someValue = 'Hello';
void doSomething(String value) {
someValue = value;
notifyListeners();
}
}
以下是一些关于 mixins 的好读物:
- Dart:什么是 mixins? https://medium.com/flutter-community/dart-what-are-mixins-3a72344011f3
- Dart for Flutter:Dart 中的 Mixins https://medium.com/flutter-community/https-medium-com-shubhamhackzz-dart-for-flutter-mixins-in-dart-f8bb10a3d341
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)