我试图创建登录的方法,我也希望它记住它的令牌用户,所以我创建了sqllite插入方法和写有令牌。我还想创建一个页面,它将划分,如果用户有令牌或没有,并显示他的RootPage或注册页面。我怎么能用flutter_bloc来处理这个问题?添加:我正在保存令牌,但它仍然显示我的注册页面,无论用户是否有令牌
我的用户记忆块:
on<CheckAuthorizationEvent>(_checkAuthorization);
}
void _checkAuthorization(
CheckAuthorizationEvent event, Emitter<AuthState> emit) async {
try {
final user = FirebaseAuth.instance.currentUser;
if (user == null) {
emit(const CheckAuth(null, false));
} else {
final tokenExists = await sQlService.isTokenExist();
emit(CheckAuth(user, tokenExists));
}
} on FirebaseAuthException catch (e) {
emit(AuthErrorState(e.getErrorMessage()));
}
}
我的页面划分:
class _EnterPageState extends State<EnterPage> {
@override
void initState() {
super.initState();
final authBloc = BlocProvider.of<AuthBloc>(context);
authBloc.add(CheckAuthorizationEvent());
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocBuilder<AuthBloc, AuthState>(
builder: (context, state) {
if (state is CheckAuth) {
if (state.auth) {
return RootScreen();
} else {
return const RegistrationScreen();
}
}
return const Center(child: CircularProgressIndicator());
},
),
);
}
}
2条答案
按热度按时间vyu0f0g11#
尝试authStateChanges()instated的currentUser。
shyt4zoc2#
你可以在你的服务器上创建一个表,在注册或登录后保存用户Firebase令牌沿着ID,并创建一个API服务,在JSON中获取它们。这是我观察,当他们改变时我会更新他们,