Flutter Riverpod:StateNotifier 不重新渲染小部件
Flutter Riverpod: StateNotifier not rerendering widget
我有一个简单的 StateNotifier class 像这样:
class MyClass extends StateNotifier<Map<String, dynamic>> {
Map<String, dynamic> data;
MyClass({this.data}) : super(null) {
data = data ?? {};
}
setData(Map<String, dynamic> newData) {
data = {...data, ...newData};
}
}
我在 providers.dart 文件中定义了我的提供商:
final myClassProvider = StateNotifierProvider((ref) => _myClass);
...我正在导入并尝试在我的小部件 build
中“读取”,并在 MyClass 的状态发生变化时更新小部件:
MyClass _myClass = ref.watch(myClassProvider.notifier);
我有几个调用 setData
方法的按钮,我可以看到它获取了新数据,但我的小部件从未重新呈现。如果我向后导航一个屏幕,然后再次前进到相同的视图,我可以看到它已经用新数据更新了,但我的小部件永远不会重新呈现。我在这里做错了什么吗?
StateNotifier
有自己的 state
.
class MyClass extends StateNotifier<Map<String, dynamic>> {
MyClass(Map<String, dynamic> data) : super(data);
setData(Map<String, dynamic> newData) {
state = {...state, ...newData};
}
}
我有一个简单的 StateNotifier class 像这样:
class MyClass extends StateNotifier<Map<String, dynamic>> {
Map<String, dynamic> data;
MyClass({this.data}) : super(null) {
data = data ?? {};
}
setData(Map<String, dynamic> newData) {
data = {...data, ...newData};
}
}
我在 providers.dart 文件中定义了我的提供商:
final myClassProvider = StateNotifierProvider((ref) => _myClass);
...我正在导入并尝试在我的小部件 build
中“读取”,并在 MyClass 的状态发生变化时更新小部件:
MyClass _myClass = ref.watch(myClassProvider.notifier);
我有几个调用 setData
方法的按钮,我可以看到它获取了新数据,但我的小部件从未重新呈现。如果我向后导航一个屏幕,然后再次前进到相同的视图,我可以看到它已经用新数据更新了,但我的小部件永远不会重新呈现。我在这里做错了什么吗?
StateNotifier
有自己的 state
.
class MyClass extends StateNotifier<Map<String, dynamic>> {
MyClass(Map<String, dynamic> data) : super(data);
setData(Map<String, dynamic> newData) {
state = {...state, ...newData};
}
}