【发布时间】:2021-05-08 13:02:27
【问题描述】:
当我的用户注册时,我将他们引导至一个页面,通知他们需要在继续之前验证其电子邮件:
这是我的验证屏幕代码:
class VerifyScreen extends StatefulWidget {
@override
_VerifyScreenState createState() => _VerifyScreenState();
}
class _VerifyScreenState extends State<VerifyScreen> {
final auth = FirebaseAuth.instance;
User user;
Timer timer;
@override
void initState() {
user = auth.currentUser;
user.sendEmailVerification();
timer = Timer.periodic(
Duration(seconds: 5),
(timer) {
checkEmailVerified();
},
);
super.initState();
}
@override
void dispose() {
timer.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
height: MediaQuery.of(context).size.height * 0.8,
width: MediaQuery.of(context).size.width * 0.8,
child: Text(
"An email has been sent to ${user.email} please verify before proceeding"),
),
),
);
}
Future<void> checkEmailVerified() async {
user = auth.currentUser;
await user.reload();
if (user.emailVerified) {
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => OurHomePage(),
),
);
timer.cancel();
}
}
}
问题说明:当我在我的 chrome 浏览器上按后退箭头时:
我返回到我的主页,用户登录我不想要。我希望我的用户在能够继续之前验证他们的电子邮件。这是我在未验证电子邮件的情况下按下返回按钮后主页上的抽屉:
我使用提供程序在我的应用程序周围传递我的用户对象。这是我的 main.dart:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(
MultiProvider(
providers: [
Provider(
create: (_) => FirebaseAuthService(),
),
StreamProvider<OurUser>(
create: (context) =>
context.read<FirebaseAuthService>().onAuthStateChanged),
],
child: MaterialApp(theme: OurTheme().buildTheme(), home: OurHomePage()),
),
);
}
然后我使用 Consumer 在我的主页上使用该提供程序:
class OurHomePage extends StatefulWidget {
@override
_OurHomePageState createState() => _OurHomePageState();
}
class _OurHomePageState extends State<OurHomePage> {
@override
Widget build(BuildContext context) {
return Consumer<OurUser>(
builder: (_, user, __) {
return ChangeNotifierProvider<SignInViewModel>(
create: (_) => SignInViewModel(context.read),
builder: (_, child) {
return Scaffold(appBar: AppBar(title: Text("My Homepage")));
},
);
},
);
}
}
谁能帮我解决我面临的问题?提前致谢。
【问题讨论】:
标签: firebase flutter dart web firebase-authentication