仅维护单个无方法值时,是否仍需使用StateNotifier?有无更简便机制?
单个简单值的状态管理优化方案
不需要用你写的这种空StateNotifier,有更简便的方案——StateProvider,它专门用来处理这种无额外逻辑的单个值状态,自带状态变更通知的逻辑,完全满足你“外部改写并触发通知”的需求。
为什么你的写法冗余?
你现在的BoolNotifier类完全是空的,没有任何自定义方法,只是单纯继承StateNotifier维护一个布尔值,这种封装完全没必要,属于过度设计。
替代方案:StateProvider
直接用Riverpod的StateProvider就能搞定,代码简洁很多,自动帮你处理状态变更的通知逻辑:
final isA = StateProvider<bool>((ref) => false); final isB = StateProvider<bool>((ref) => false);
使用方式
- 读取状态:和之前一样用
ref.watch(isA)获取当前布尔值 - 外部更新状态:通过
ref.read(isA.notifier).state = true;来修改值,这里的notifier会自动触发状态变更通知,效果和你需要的notifyListeners()完全一致
后续扩展
如果之后这个值需要添加业务逻辑(比如更新时做参数校验、联动其他状态),再把StateProvider改成StateNotifierProvider也完全兼容,现在用StateProvider是最贴合当前简单场景的选择。
内容的提问来源于stack exchange,提问作者Ganessa
相关产品推荐
相关产品推荐

