问题描述
我尝试根据本教程为 Flutter 实现 Firebase 身份验证:https://youtu.be/vrPk6LB9bjo?t=393
Widget 应检查用户是否使用 riverpod 钩子方法和提供程序登录,并加载 HomeScreen 或 LoginScreen Widget。
main.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 (将#修改为@)