从文档中,我了解到可以调用ChangeNotifier实例上的addListener()
将自定义监听器添加到堆栈中。
此方法接受带有零参数的回调(根据notifyListeners()),例如:
class MyClass extends ChangeNotifier {
MyClass() {
addListener(() {
// ...
});
}
}
从回调中,如何找出
MyClass
的哪些属性或部分已更改? 最佳答案
ChangeNotifier
本质上没有这种功能。您将必须实现自己的逻辑。具体来说,您可以访问ChangeNotifier
实现的所有属性,因为您在其作用域中添加了监听器,或者您可以访问它,因为在您的范围中有对它的引用。
ChangeNotifier
仅实现 Listenable
,并提供了一些用于管理监听器的实用程序。此外,文档中还说明了以下内容:
我不确定用于通知监听器的选项具有更好的运行时复杂性,但是您不会在常规Flutter应用程序中遇到任何问题。
ValueNotifier
ValueNotifier
是ChangeNotifier
的预制实现,当其 value
property更改时将通知其监听器。
在大多数情况下,这已经足够了,但是由于您似乎想创建自定义ChangeNotifier
,因此可以使用source code of ValueNotifier
来查看示例实现(非常简单)。
如果您只是想进行状态管理,通常ValueNotifier
可以很好地工作。但是,它们并不适用于所有情况。因此,这是一个extensive list with different state management options。
考虑到这些问题,我认为最适合您需求的技术和最受欢迎的选项如下:
Listenable
一样,它与 ChangeNotifier
一起使用。 provider
package主要是各种Flutter状态管理技术(InheritedWidget
,StatefulWidget
,ValueNotifier
等)的便捷包装。