flutter - Flutter Riverpod:使用 StateNotifier 和 .select() 重建过滤器
问题描述
这是我当前的状态管理解决方案
class UserState {
final int id;
final String name;
}
class UserNotifier extends StateNotifier<UserState> {
UserNotifier() : super(User(1, 'Pero Peric'));
}
final userNotifierProvider = StateNotifierProvider((ref) => UserNotifier());
我只想在名称更改而不是 id 时重建我的 UI!
Riverpod 提供了一种方法来执行此链接,但我无法让它与我的 StateNotifier 一起使用。
我会这样写,但它不是这样工作的。
// inside Consumer widget
final userName = watch(userNotifierProvider.select((value) => value.state.name));
您可以重构我的代码以使其正常工作或提出其他解决方案吗?
任何帮助表示赞赏!
解决方案
class UserState {
UserState({
required this.id,
required this.name,
});
final int id;
final String name;
}
class UserNotifier extends StateNotifier<UserState> {
UserNotifier() : super(UserState(id: 1, name: 'Pero Peric'));
}
final userNotifierProvider =
StateNotifierProvider<UserNotifier, UserState>((ref) => UserNotifier());
在消费者中,
final userName =
watch(userNotifierProvider.select((value) => value.name)); // value is the state
推荐阅读
- java - 在 try catch 块之外使用变量(Java)
- sql - ISnull 函数需要两个参数
- python - xPath 没有进入下一页
- javascript - 'MapEditServiceConfig' 仅指一种类型,但在此处用作值
- spring-security - oauth2 的 spring sso 身份验证如何工作?
- javascript - 页眉需要在页面滚动时上下滑动
- javascript - 模态没有重定向到预期的文件
- npm-install - hiredis 使用 .net 框架 2.0 错误重建
- c# - 如何禁用对 wpf 中元素的自动对焦?
- python - 如何解决 driver.send_keys(Keys.ENTER) 无法正常工作的问题