Flutter异步值显示插件riverpod_async_value_widget的使用

Flutter异步值显示插件riverpod_async_value_widget的使用

用于简化从Riverpod获取的AsyncValue的显示。

使用方法

该包的主要目的是在每次想要显示AsyncValue时,无需手动创建错误或加载状态。AsyncValueWidget会自动在加载状态下显示进度指示器,在错误状态下显示错误消息。

可以通过指定onRetry回调来添加一个“重试”按钮。

@override
Widget build(BuildContext context, WidgetRef ref) {
    final myValue = ref.watch(myProvider);

    return AsyncValueWidget<String>(
        value: myValue,
        builder: (context, data) {
            return Text(data); // 显示数据
        },
        onRetry: () => ref.refresh(myProvider), // 重试逻辑
    );
}

自定义

AsyncValueWidget提供了多种自定义选项。这些选项可以通过DefaultAsyncValueWidgetConfig小部件全局应用(或任何其他widget树范围):

DefaultAsyncValueWidgetConfig(
    transitionDuration: const Duration(milliseconds: 50),
    // 还有很多其他可选参数
    child: MyApp(),
);

更多关于Flutter异步值显示插件riverpod_async_value_widget的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter异步值显示插件riverpod_async_value_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


riverpod_async_value_widget 是一个用于简化在 Flutter 中使用 Riverpod 处理异步数据的插件。它可以帮助你在 UI 中更方便地显示异步数据的不同状态(如加载中、错误、数据加载完成等)。

安装

首先,你需要在 pubspec.yaml 文件中添加 riverpod_async_value_widget 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_riverpod: ^2.0.0
  riverpod_async_value_widget: ^0.1.0

然后运行 flutter pub get 来安装依赖。

基本用法

riverpod_async_value_widget 提供了一个 AsyncValueWidget 组件,它可以帮助你处理 AsyncValue 的不同状态。

假设你有一个异步的数据提供者:

final myAsyncProvider = FutureProvider<String>((ref) async {
  await Future.delayed(Duration(seconds: 2));
  return 'Hello, Riverpod!';
});

你可以在 UI 中使用 AsyncValueWidget 来显示这个异步数据:

class MyWidget extends ConsumerWidget {
  [@override](/user/override)
  Widget build(BuildContext context, WidgetRef ref) {
    final asyncValue = ref.watch(myAsyncProvider);

    return AsyncValueWidget<String>(
      value: asyncValue,
      data: (data) {
        return Center(
          child: Text(data),
        );
      },
      loading: () {
        return Center(
          child: CircularProgressIndicator(),
        );
      },
      error: (error, stackTrace) {
        return Center(
          child: Text('Error: $error'),
        );
      },
    );
  }
}
回到顶部