我有这样的基本认证肘:
class AuthCubit extends Cubit<AuthState> {
AuthCubit() : super(const _AuthState(isUserSignedIn: false)) {
FirebaseAuth.instance.authStateChanges().listen((User? user) {
if (user == null) {
emit(state.copyWith(
isUserSignedIn: false,
));
print('user logged out');
} else {
print('user logged innnnn');
emit(state.copyWith(isUserSignedIn: true));
}
print(state);
});
}
}
当我打印上面的语句时,它可以正常工作(当我登录时,它给出了这个:AuthState(isUserSignedIn: true)
现在,问题从这里开始: Main.dart
class AppWidget extends StatelessWidget {
const AppWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
lazy: false,
create: (context) => AuthCubit(),
child: FlowBuilder<AuthState>(
state: const AuthState(),
onGeneratePages: (authState, pages) {
print(("HERE MAIN.DART AuthState ${authState}"));
if (authState.isUserSignedIn) {
return [SignInPage.page()];
} else {
return [SignInPage.page()];
}
}),
));
}
}
我使用流量生成器。HERE MAIN.DART 部分的代码,给出了假,虽然真正的陈述是真的。顺便说一句,auth state 有默认值(false),正因为如此,它可以给出也许我不知道。
此处的身份验证状态:
@freezed
class AuthState with _$AuthState {
const factory AuthState({
@Default(false) bool isUserSignedIn,
}) = _AuthState;
}