我正在使用Riverpod作为我的Flutter 翼项目的状态管理,目前正在进行身份验证服务.我正在让AuthNotifier扩展AsyncNotifier.例如,当我调用AuthService时,问题是:

Future<void> logout() async {
    state = const AsyncValue.loading();
    state = await AsyncValue.guard(() async {
      return await authService.logout();
    });
    state.when(
      data: (data){},
      error: (error, stackTrace){
        ref.read(errorProvider.notifier).createException(exception: error.toString(), errorTitle: "Logout Error");
      },
      loading: (){},
    );
  }

我只是在使用状态中的错误.但我也有这个未使用的代码.

我试着寻找国家或国家的方法,但找不到任何东西,要么是因为答案不在那里,要么是因为我没有看到它.如果任何人在处理通告程序内部的错误方面有其他 Select ,我愿意接受建议.

推荐答案

使用whenOrNull/mapOrNullmaybeWhen/maybeMap仅处理某些状态,例如:

final Object? newState = state.whenOrNull(
      error: (error, stackTrace){
        ...
      },
    );

// or

final Object newState = state.whenOrNull(
      orElse: () => ...,
      error: (error, stackTrace){
        ...
      },
    );

Flutter相关问答推荐

在Flutter中为不受约束的小部件制作动画

创建多个具有适当填充和对齐的按钮的最佳方法

参数类型';List<;Dynamic&>不能分配给参数类型';List<;SingleChildWidget&>';

Firebase WHERE过滤器在日期字段中不起作用

Flutter 需要 Xcode 14 或更高版本

打开键盘时屏幕组件会被压扁

Flutter中不使用Container是否可以做margin

了解多Provider 和流

如何在flutter中实现这样的底部导航栏?

'type' Icon '不是类型' IconData '的子类型

如何使用Riverpod提供程序正确构建搜索栏?

我怎样才能消除我的 Column 子元素之间的差距?

我在手机上找不到我的 Flutter 应用缓存数据

Android Studio - Electric Eel 2022.1.1 更新 destruct 了 dart 文件图标

如何在 flutter 的 onChanged(更改字符)处更改 TextField 边框 colored颜色 ?

Flutter中如何连续获取TextField的文本是否为空?

如何在 Flutter 中将 ScaffoldMessenger 中的 Snackbar 显示为 Widget?

如何获得Flutter 的时差?

Flutter:制作自定义小部件的最佳做法是什么?

无法列出 com.facebook.android:facebook-login -Facebook 登录问题的版本