使用 Flutter Riverpod 清除所有缓存数据、监听器、提供者状态

Abd*_*oze 1 flutter riverpod

假设有一个登录系统。因此,登录后,我需要进入主屏幕。注销后,就来到了登录界面。因此,在这种情况下,注销后需要清除所有提供程序数据、侦听器、与主屏幕相关的状态等。

还需要清楚如何调用 StateNotifierProvider 的 onDispose() 方法。在注销的情况下如何从提供商外部访问此内容。

Rém*_*let 7

解决方案是让需要重置的提供商“监视”保留有关登录信息的其他提供商

例如:

final authProvider = SomeProvider<User>(<anything>);

final providerThatResetsWhenLogOutOrLogIn = Provider((ref) {
  ref.watch(authProvider);
})
Run Code Online (Sandbox Code Playgroud)

  • 请问您能更详细一点吗? (2认同)
  • @Rémi所以你不想调用invalidate?那么 AsyncNotifiers 又如何呢?它们从 build() 上的 API 获取数据,如何防止它们在用户注销时触发? (2认同)