Cubit 状态显示 2 个不同的值
Cubit state shows 2 different values
我有这样的基本授权:
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 段的代码,给出的是false,虽然real 语句是true。
顺便说一句,auth state 有默认值(false),因此它可以给出也许我不知道。
此处的授权状态:
@freezed
class AuthState with _$AuthState {
const factory AuthState({
@Default(false) bool isUserSignedIn,
}) = _AuthState;
}
我用 flow_builder
包解决了。
我有这样的基本授权:
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 段的代码,给出的是false,虽然real 语句是true。 顺便说一句,auth state 有默认值(false),因此它可以给出也许我不知道。
此处的授权状态:
@freezed
class AuthState with _$AuthState {
const factory AuthState({
@Default(false) bool isUserSignedIn,
}) = _AuthState;
}
我用 flow_builder
包解决了。