gpt4 book ai didi

firebase - Flutter-Firebase自动登录和电子邮件身份验证错误

转载 作者:行者123 更新时间:2023-12-03 03:22:31 25 4
gpt4 key购买 nike

我正在通过Firebase创建登录代码。我只想登录到通过电子邮件注册并认证的用户并进行设置,以便可以自动登录。使用streambuilder创建的代码可以自动登录。但是,当接收者为null时,会发生自动登录电子邮件身份验证错误。有没有办法将接收器放入?或者,如果您能告诉我如何解决它,我将不胜感激。

import 'dart:io';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutteridmemo/pages/log_in_page.dart';
import 'package:flutteridmemo/pages/memo_page.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
Directory document = await getApplicationDocumentsDirectory();
Hive.init(document.path);
await Hive.openBox<String>("DB");
runApp(MyApp());
}

bool isFirstData = true;

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
FirebaseUser _firebaseUser;

@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
canvasColor: Colors.transparent,
),
title: 'ID_Memo_Memo',
home: StreamBuilder<FirebaseUser>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (context, snapshot) {
if (isFirstData) {
isFirstData = false;
return Center(
child: CircularProgressIndicator(),
);
} else {
if (snapshot.hasData && _firebaseUser.isEmailVerified == true) {
return MemoPage();
} else {
return LogInPage();
}
}
},
),
);
}
}

这是错误。
I/flutter (14699): The following NoSuchMethodError was thrown building             
StreamBuilder<FirebaseUser>(dirty, state:
I/flutter (14699): _StreamBuilderBaseState<FirebaseUser,
AsyncSnapshot<FirebaseUser>>#963d7):
I/flutter (14699): The getter 'isEmailVerified' was called on null.
I/flutter (14699): Receiver: null
I/flutter (14699): Tried calling: isEmailVerified
I/flutter (14699):
I/flutter (14699): The relevant error-causing widget was:
I/flutter (14699): StreamBuilder<FirebaseUser> enter code here

最佳答案

'isEmailVerified'在null上被调用,意味着_firebaseUser为null。您没有初始化_firebaseUser,因为您正在FirebaseAuth.instance.onAuthStateChanged内使用StreamBuilder,它应该返回Stream<FirebaseUser>,因此您应该使用snapshot类型的AsyncSnapshot<FirebaseUser>变量来检查电子邮件是否经过验证。

 else {
if (snapshot.hasData &&snapshot.data.isEmailVerified == true) {
return MemoPage();
} else {
return LogInPage();
}

关于firebase - Flutter-Firebase自动登录和电子邮件身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61653086/

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