现在我尝试编写自己的 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()));
}
}
}
答案 0 :(得分:0)
所以这个错误是因为auth.currentUser
返回了null
。因此,尝试在 null
上执行方法会引发错误,因为 null
上不存在任何内容。
您是否在 main()
方法中添加了以下内容?
await Firebase.initializeApp();
runApp(Home());
查看以下指南了解更多详情https://firebase.google.com/docs/flutter/setup?platform=android