当我知道状态正在发生变化时,我的应用程序的用户界面不会更新。我正在使用watchRiverpod 的方法来处理此问题,但除非我进行热重载,否则更改不会生效。
我有一个类,HabitListStateNotifier其中包含从列表中添加/删除习惯的方法:
class HabitListStateNotifier extends StateNotifier<List<Habit>> {
HabitListStateNotifier(state) : super(state ?? []);
void startAddNewHabit(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (_) {
return NewHabit();
});
}
void addNewHabit(String title) {
final newHabit = Habit(title: title);
state.add(newHabit);
}
void deleteHabit(String id) {
state.removeWhere((habit) => habit.id == id);
}
}
Run Code Online (Sandbox Code Playgroud)
这是这个的提供者:
final habitsProvider = StateNotifierProvider(
(ref) => HabitListStateNotifier(
[
Habit(title: 'Example Habit'),
],
),
);
Run Code Online (Sandbox Code Playgroud)
HabitList以下是(UI 未更新的部分)的实现方式:
class HabitList extends ConsumerWidget {
@override
Widget build(BuildContext context, …Run Code Online (Sandbox Code Playgroud)