dart 记住用户由它的firebase令牌在扑

f0brbegy  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(119)

我试图创建登录的方法,我也希望它记住它的令牌用户,所以我创建了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());
        },
      ),
    );
  }
}
vyu0f0g1

vyu0f0g11#

尝试authStateChanges()instated的currentUser。

FirebaseAuth.instance.authStateChanges().listen((user) async {
  if (user == null) {
    emit(const CheckAuth(null, false));
  } else {
    final tokenExists = await sQlService.isTokenExist();
    emit(CheckAuth(user, tokenExists));
  }
},onError: (e){
  emit(AuthErrorState(e.toString()));
});
shyt4zoc

shyt4zoc2#

你可以在你的服务器上创建一个表,在注册或登录后保存用户Firebase令牌沿着ID,并创建一个API服务,在JSON中获取它们。这是我观察,当他们改变时我会更新他们,

相关问题