FLutter FirebaseAuth 电子邮件验证

时间:2021-02-09 18:57:39

标签: android firebase flutter

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

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

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()));
    }
  }


    
  

}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

相关问题