# Flutter/Riverpod -使用AsyncNotifier时是否可以只调用error?

9lowa7mx  于 2023-05-29  发布在  Flutter
关注(0)|答案(1)|浏览(84)

我正在使用riverpod作为我的flutter项目的状态管理,目前正在开发auth服务。我正在使用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: (){},
    );
  }

我只使用了state.when中的error,但我也有这个未使用的代码。
我试着寻找状态或状态的方法,但找不到任何东西,因为答案不在那里,或者因为我没有看到它。如果任何人在处理通知程序中的错误时有其他选择,我愿意接受建议。

zbsbpyhn

zbsbpyhn1#

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

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

// or

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

相关问题