hooks_riverpod:使用 Riverpod 进行 Flutter Firebase 身份验证,发生错误:提供程序试图将 `null` 分配给不可为 null 的 `exposedvalue`"

问题描述

我尝试根据本教程为 Flutter 实现 Firebase 身份验证:https://youtu.be/vrPk6LB9bjo?t=393

Widget 应检查用户是否使用 riverpod 钩子方法和提供程序登录,并加载 HomeScreen 或 LoginScreen Widget。

ma​​in.dart

class AuthWrapper extends HookWidget {
      const AuthWrapper({Key key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        final authControllerState = useProvider(authControllerProvider.state);
        print(authControllerState);
    
        if (authControllerState != null) {
          return const HomeScreen();
        }
        return LoginScreen();
      }
    }

提供者控制器:

final authControllerProvider = StateNotifierProvider<AuthController>(
  (ref) => AuthController(ref.read),);

class AuthController extends StateNotifier<User?> {
  final Reader _read;

  StreamSubscription<User?>? _authStateChangeSubscription;

  AuthController(this._read) : super(null) {
    _authStateChangeSubscription?.cancel();
    _authStateChangeSubscription =
        _read(authProvider).authStateChanges.listen((user) {
      state = user;
    });
  }
}

但是我遇到了这个错误

'package:riverpod/src/framework/base provider.dart':断言失败: 第 944 行第 7 行:'exposedvalue 被监听':提供者试图分配 null 到不可为空的 exposedvalue

我认为错误可能出在 Provider Controller 的实现中,但我不知道我应该如何做。

有谁知道我该如何解决这个错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)