假设我们在视图中添加了一个changeNotifier对象的监听器,如下所示:
someChangeNotifierObject.addListener((){ if (this.mounted) setState(){}});
addListener
中使用内联函数。如果你需要mounted
- 它可以在整个State
的任何地方访问,除了静态方法。因此,只需在当前State类中创建一个新函数。EG
@override
void initState() {
super.initState();
someChangeNotifierObject.addListener(myListenerFunc);
}
@override
void dispose() {
someChangeNotifierObject.removeListener(myListenerFunc);
super.dispose();
}
void myListenerFunc() {
print("Heya the object has changed!");
setState(() {
// re-render current stateful widget.
});
}
但是,无论您是否在侦听器中使用State
的方法,在处置时删除侦听器只是一个好习惯。