小编wol*_*eks的帖子

Flutter/Riverpod:UI 未根据 StateNotifierProvider 内的状态更改进行更新

当我知道状态正在发生变化时,我的应用程序的用户界面不会更新。我正在使用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)

dart flutter flutter-provider riverpod

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

dart ×1

flutter ×1

flutter-provider ×1

riverpod ×1