【问题标题】:In flutter with riverpod, how to update state on a page already in the navigation stack与riverpod一起颤抖,如何更新导航堆栈中已经存在的页面上的状态
【发布时间】:2021-10-18 17:18:42
【问题描述】:

我有一些遵循这个流程的 Flutter/riverpod/navigator 2.0 页面。

项目列表页面 -> 导航到 -> 编辑项目页面 -> 后退按钮 -> 项目列表页面。

问题是当一个人点击后退按钮时,项目列表不会更新为新内容,因为该页面缓存在页面导航堆栈中。

对于如何处理这种情况有什么建议吗?

【问题讨论】:

  • 我和你兄弟。我无法完成这项工作。如果您找到答案,请在此处发布:-)

标签: flutter flutter-navigation riverpod


【解决方案1】:

好的,我刚刚开始工作!非常简短的版本是在您的第一个表单上使用嵌套在 ProviderListener 内的消费者。对我来说,第一种形式显示了检索到的模型列表。在那个列表页面上,我有...

  Widget build(BuildContext context) {
    return ProviderListener(
      onChange: (context, state) {
      // Below Model.save in provider sets state to
      // "Success(model)". This triggers here and we
      // List.update in provider to update fields in
      // the Model in the List. Then the Consumer
      // below triggers on "Data(model)" state and the
      // List refreshes and shows updated Model
      if (state is Success) {
          context.read(regionListNotifierProvider.notifier).update(state.model);
        }
      },
      provider: regionNotifierProvider,
      child: Consumer(builder: (context, watch, child) {
        final state = watch(regionListNotifierProvider);

在列表页面上,每个图块都是可点击的。当您单击它时,它使用模型提供程序将状态设置为您刚刚单击的模型。然后它导航到表单。表单读取状态并查看您在列表中单击的模型的信息。

在我的 ModelForm(编辑模型字段的地方)中,当您保存时,它会触发其提供程序中的保存方法。在那里,它触发上面的 .update 然后 ModelForm Navigator.pops 回到 List 页面,然后上面的 Listener 和 Consumer 依次触发,List 显示更新的数据。

注意: ProviderListener 正在监听 ModelForm 提供者,然后 Consumer 正在监听 List 提供者。跟随?这是THE终于奏效的技巧!

注意 2: 这些都是无状态小部件。只需要 Riverpod 提供程序中的状态。他们什么都做。

注意 3: 这 2 个供应商来回交谈。 List 将点击的模型提供给表单,当表单保存时,List 页面会听到并更新它的模型列表

如果您需要,我很乐意添加更多详细信息 :-)

【讨论】:

  • 这是有道理的,很高兴将其标记为正确。我最终所做的与youtube.com/watch?v=cmPexCDz9PA&t=1442s 类似,其中列表页面上的提供者监听编辑页面上的提供者。
  • 好的,我明白了,Riverpod 1.0 略有不同,而且更好!我正在升级我的代码以使用它。这与我已经在做的并没有太大的不同。主要是 WidgetRefs 并将 ProviderListeners 更改为 ref.listen。一点也不坏。谢谢你的链接! :-)
猜你喜欢
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 2022-01-25
  • 2020-11-01
  • 2021-08-07
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多