0

我有这样的基本认证肘:

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;
}
4

1 回答 1

0

我用 flow_builder包裹解决了。

于 2022-02-06T19:01:11.653 回答