繁体   English   中英

FLutter FirebaseAuth Email 验证

[英]FLutter FirebaseAuth Email verification

现在我尝试编写自己的 android 应用程序。 因此我想创建一个基于电子邮件和密码的登录/注册,其中还包括一个电子邮件验证服务。 问题是,每次我在模拟器中启动它并尝试注册时,它都会发生一个 nosuchmethod 错误,告诉我在 null 上调用了 getter email 或 getter sendEmailVerification()。

请看看我的验证码并告诉我我做错了什么。

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'home.dart';






class Verification extends StatefulWidget {
  @override
  _VerificationState createState() => _VerificationState();
}

class _VerificationState extends State<Verification> {
  final auth = FirebaseAuth.instance;
  User user;
  Timer timer;
  String email =  FirebaseAuth.instance.currentUser.email.toString(); 


 Future<void> verificateEmail() async{
   User user = auth.currentUser;

   if (user != null) {
     await user.sendEmailVerification();}
    timer = Timer.periodic(Duration(seconds: 2), (timer) {checkEmailVerified(); });

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




  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text("draicksmail sent to ${user.email}"),
      ),
    );
  }




  Future<void> checkEmailVerified() async{
    user = auth.currentUser;
    await user.reload();
    if (user.emailVerified){
      timer.cancel();
      Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=> Home()));
    }
  }


    
  

}

所以这个错误是因为auth.currentUser返回null引起的。 因此,尝试在null上执行方法会引发错误,因为null上不存在任何内容。

您是否在main()方法中添加了以下内容?

await Firebase.initializeApp();
runApp(Home());

查看以下指南了解更多详细信息https://firebase.google.com/docs/flutter/setup?platform=android

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM