Flutter Riverpod:由于 ref.watch() 导致不可见页面刷新

问题描述 投票:0回答:1

我正在构建一个应用程序,其中有以下场景:

首页 -> 聊天页面 -> 个人资料页面

“->”表示以推送形式进行路由,例如这样:

navigatorKey.currentState?.push(
  MaterialPageRoute(
     builder: (context) => ScreenPartyInfo(partyId: partyId),
  ),
);

在我的主页上,我正在观看一个提供商:

final partyListData = ref.watch(partyListStateProvider);

如果路由到我的个人资料页面并修改该提供商,则此时不可见的主页会更新。我怎样才能防止这种行为?

如果它打开且可见,我希望它能够在更改时刷新。路由也必须是这样的,因为我需要返回功能。

partyListStateProvider 是一个普通的 StateNotifierProvider。

flutter riverpod
1个回答
0
投票

Riverpod 会更新您的页面,因为它是“活动的”。当你切换到使用push()方法的页面时,如果你使用replace(),你的主页将被销毁,相应的提供者也会被处置。

如果我能理解你的意思,replace() 方法目前并不是你的项目的最佳解决方案,因此你必须看到你的页面更新,即使不可见。

© www.soinside.com 2019 - 2024. All rights reserved.