【发布时间】:2021-05-14 06:39:54
【问题描述】:
我正在制作一个使用 Firebase 匿名登录的 Flutter 应用(稍后我将添加其他登录方法)。我想创建 Stream 和 Provider,这样如果用户点击 Login 按钮,它会将用户带到 Home(),如果用户点击 Home() 内的 Logout 按钮,它会将其带到 Login() 页面。
我还想为应用程序重新启动执行此操作,例如当用户之前登录时,用户应该被直接带到 Home() 页面而不是 Login()。
我对这一切都有非常基本的了解。在这里,我正在关注 FlutterFire 文档。 https://firebase.flutter.dev/docs/auth/usage/#authentication-state 在这个链接中,他们谈到了 Stream 等等,但我没有得到。
这是我的代码:
main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Wrapper(),
);
}
}
wrapper.dart
class Wrapper extends StatefulWidget {
@override
_WrapperState createState() => _WrapperState();
}
class _WrapperState extends State<Wrapper> {
final FirebaseAuth _auth = FirebaseAuth.instance;
@override
Widget build(BuildContext context) {
_auth.authStateChanges().listen((User user) {
if (user == null) {
print('the user is currently signed out');
return Authenticate();
} else {
print('The User is currently signed In');
return Home();
}
});
}
}
AuthService
import 'package:firebase_auth/firebase_auth.dart';
class AuthenticationService {
final FirebaseAuth _auth = FirebaseAuth.instance;
//sign in anonympusly
Future signinanon() async {
try {
UserCredential result = await _auth.signInAnonymously();
User userdetails = result.user;
return userdetails;
} catch (e) {
print(e.toString());
return null;
}
}
}
【问题讨论】:
标签: firebase flutter firebase-authentication