Flutter调用context.read(currentStep)报位置参数过多错误
报错根因
报错是接口调用错误:
- 你写的
context.read()是Flutter BuildContext自带的方法,本身不接收位置参数,传入currentStep自然触发参数数量不匹配错误。 - 你使用的是Riverpod 2.x版本,
StateProvider的状态修改不能直接读取provider本身操作,需要读取notifier拿到StateController实例才能修改状态值。
修复方法
你的build方法已经传入了ref(Riverpod的WidgetRef实例),直接替换按钮回调里的读取逻辑即可:
// 上一步按钮回调 onPressed: step == 1 ? null : () => ref.read(currentStep.notifier).state--, // 下一步按钮回调 onPressed: step == 4 ? null : () => ref.read(currentStep.notifier).state++,
提示:不要把Riverpod的
ref.read和旧版Provider库的context.read写法混淆,Riverpod 2.x推荐统一通过WidgetRef/ProviderRef执行provider读写操作,修改StateProvider状态必须通过notifier拿到状态控制器,不要直接操作provider本身。
修复后步骤切换逻辑可正常运行,实现预期的四步预约页面上下步交互:
内容的提问来源于stack exchange,提问作者Jesselyn Firesta
相关产品推荐
相关产品推荐

