[英]How to setup security rules for a Flutter app that uses Cloud Firestore?
[英]Flutter: How to setup Stream to auto log in into app?
我正在尝试使用 Firebase 使用匿名登录制作 Flutter 应用程序。 我想设置 Stream (或任何其他方法),以便在登录后并重新启动应用程序后,它不会 go 再次登录页面而不是 Z34D1F91FB2E514B8576FAB1A7A7A 。
我正在关注本教程。 https://firebase.flutter.dev/docs/auth/usage/#authentication-state
我在这里查看了许多围绕提供者和所有内容的答案。 作为一个初学者,它超出了我的想象。
我在这里提供我的代码:
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(),
);
}
}
包装器.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();
}
});
}
}
身份验证服务文件
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;
}
}
}
如何实现正确的流式传输?
当您可以通过这种方式轻松完成时,我认为不需要 Stream:
checkIfLoggedIn() {
if (FirebaseAuth.instance.currentUser?.uid == null) {
return Authenticate();
} else {
// logged
return Home();
}
}
然后在主目录中调用它。dart希望这有效!
main.dart:
return MaterialApp(
home: FutureBuilder<FirebaseUser>(
future: FirebaseAuth.instance.currentUser(),
builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot){
if (snapshot.hasData){
FirebaseUser user = snapshot.data; // this is your user instance
/// is because there is user already logged
return MainScreen();
}
/// other way there is no user logged.
return LoginScreen();
}
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.