gpt4 book ai didi

firebase - Flutter:如何监听 FirebaseUser 是 Email verified bool 值?

转载 作者:IT王子 更新时间:2023-10-29 07:16:37 25 4
gpt4 key购买 nike

我的想法:我想在 Flutter 中使用 Firebase Auth Plugin 来注册用户。但在他们可以访问该应用程序之前,他们必须验证他们的电子邮件地址。因此,我在注册后将 Firebase 用户推送到验证屏幕。这只是一个加载屏幕,告诉用户他必须验证他的电子邮件。

但是现在:如果用户的电子邮件是否经过验证,我如何才能持续收听并将他(如果为真)发送到主屏幕?

我是 Flutter 的新手,我不知道我是否必须使用 Streams 或 Observables 或 while Loop 或 setState() 或其他东西来进行这样的 bool 检查。而且我也不知道如何设置解决方案。

这是我注册用户的基本代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:async';

class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
final Firestore _db = Firestore.instance;

Future<FirebaseUser> get getUser => _auth.currentUser();

Stream<FirebaseUser> get user => _auth.onAuthStateChanged;

Future<FirebaseUser> edubslogin(String email, String password) async {
try {
final FirebaseUser user = await _auth.createUserWithEmailAndPassword(
email: email,
password: password,
);

await user.sendEmailVerification();

//email verification somewhere here

updateUserData(user);
return user;
} catch (error) {
print(error);
return null;
}
}

我已经试过了:

     if (user.isEmailVerified == true) {

//go to Homescreen
return true;
} else {

//show verification screen(loading spinner)
return false;
}

但我没有从 isEmailVerified 中得到 bool 值 true

我需要做什么?

最佳答案

我在我的应用中遇到了同样的情况。我的解决方案是在战略路线的 initState 方法中创建一个周期性计时器,以在验证电子邮件之前保留应用程序。它不像使用监听器那么优雅,但工作正常。

import 'dart:async';
import 'package:firebase_auth/firebase_auth.dart';

class _AccountConfirmationState extends State<AccountConfirmation> {

late Timer _timer;

@override
void initState() {
super.initState();

_timer = Timer.periodic(const Duration(seconds: 5), (timer) async {
await FirebaseAuth.instance.currentUser?.reload();
final user = FirebaseAuth.instance.currentUser;
if (user?.emailVerified ?? false) {
timer.cancel();
Navigator.pop(context, true);
}
});
}

@override
void dispose() {
super.dispose();
_timer.cancel();
}

@override
Widget build(BuildContext context) {
//TODO: Implement your amazing waiting screen here
}

}

关于firebase - Flutter:如何监听 FirebaseUser 是 Email verified bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com