Pal*_*dro 2 flutter flutter-provider riverpod flutter-riverpod
这是我的用例:
数据已下载
final dataProvider = FutureProvider<MyModel>((ref) async {
return fetchData();
});
Run Code Online (Sandbox Code Playgroud)
它在小部件的构建方法中像这样使用:
ref.watch(dataProvider).when(
data: DataWidget(data),
error: ErrorWidget(),
loading: LoadingWidget())
Run Code Online (Sandbox Code Playgroud)
用户可以选择刷新数据:
ref.refresh(dataProvider.future);
Run Code Online (Sandbox Code Playgroud)
但是,当出现错误时(例如手机处于飞行模式),会提供错误,因此 DataWidget 会丢失并替换为 ErrorWidget...有没有办法使用 Riverpod 来提供/保留现有数据而不是错误?我相信这是常见的情况,但我没有找到解决这个问题的任何优雅的解决方案。我也阅读了文档,但没有找到与此相关的任何有用信息。我错过了什么吗?(我是 Riverpod 的新手)谢谢
刷新时保留以前的数据是 2.0.0 的一部分行为。
尽管您可能遇到了一些错误。确保您使用的是 2.1.3 或更高版本,这应该可以解决与此相关的所有问题。
至于用于when
显示以前的数据/错误,您可以使用各种标志:
asyncValue.when(
// show previous data/error on loading
skipLoadingOnReload: true,
// show previous data if there's an error
skipError: true,
loading:...,
data:...,
error: ...,
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1114 次 |
最近记录: |