【发布时间】:2021-07-06 04:19:32
【问题描述】:
问题
所以我正在尝试使用 Firebase 创建一个颤振应用程序,我正在关注本教程系列:
https://www.youtube.com/playlist?list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC
我正在观看此视频:
https://www.youtube.com/watch?v=v3sY3RWciNw&list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC&index=10
每当我运行我的代码并单击调试控制台中出现的退出按钮时:
D/FirebaseAuth( 6371): Notifying id token listeners about a sign-out event.
D/FirebaseAuth( 6371): Notifying auth state listeners about a sign-out event.
我没有按我应该的方式被发送到登录屏幕。
这是您退出页面的代码:
import 'package:flutter/material.dart';
import 'package:my_planner/services/auth.dart';
class SettingsPage extends StatefulWidget {
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
final AuthService _auth = AuthService();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.indigoAccent,
elevation: 10.0,
actions: [
IconButton(
onPressed: () {
Navigator.pop(context);
},
iconSize: 35.0,
icon: Icon(
Icons.arrow_back
),
)
],
leading: Icon(
Icons.settings,
size: 35.0,
),
title: Text(
"Settings",
style: TextStyle(
fontSize: 30.0,
fontFamily: "Nunito",
),
),
),
body: Padding(
padding: const EdgeInsets.all(10.0),
child: Align(
alignment: Alignment.topCenter,
child: Column(
children: [
MaterialButton(
padding: EdgeInsets.symmetric(horizontal: 30.0, vertical: 20.0),
splashColor: Colors.indigoAccent[700],
onPressed: () async {
await _auth.signOut();
},
color: Colors.indigoAccent,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),
child: Text(
"Sign out",
style: TextStyle(
color: Colors.white,
fontSize: 25.0
),
),
)
],
),
),
),
);
}
}
这些是代码使用的其他文件:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:my_planner/models/user.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
//create user object based on firebase user
MyUser _userFromFirebaseUser(User user) {
return user != null ? MyUser(uid: user.uid) : null;
}
// auth change user stream
Stream <MyUser> get user {
return _auth.authStateChanges()
.map(_userFromFirebaseUser);
}
// sign in anon
Future signInAnon() async {
try {
UserCredential result = await _auth.signInAnonymously();
User user = result.user;
return _userFromFirebaseUser(user);
}
catch (e) {
print(e.toString());
return null;
}
}
// sign in with email and password
// register with email and password
// sign out
Future signOut() async {
try {
return await _auth.signOut();
} catch (e) {
print(e.toString());
return null;
}
}
}
和
class MyUser {
final String uid;
MyUser({this.uid});
}
我们将不胜感激。
【问题讨论】:
-
Firebase 身份验证正在向您发出声音,这是您不知道的应用程序。两种方法 - 在身份验证状态上实现监听器,或者只是在注销成功时开始导航到登录页面。
标签: android firebase flutter dart firebase-authentication