gpt4 book ai didi

firebase - 这是检查用户是否登录的正确方法吗? flutter 火力

转载 作者:行者123 更新时间:2023-12-04 14:05:31 28 4
gpt4 key购买 nike

我正在使用 Firebase 在我的应用程序中添加登录/注册。它运行良好,但现在我想检查用户在打开应用程序时是否已经注册并登录,如果是这样,则向他显示主页,否则向他显示登录页面。所以我做了一些搜索,主要是使用 Streambuilder 方法完成的。但我所做的只是检查用户是否使用登录

initialRoute: FirebaseAuth.instance.currentUser == null
? Routes.loginScreen
: Routes.homePage,
它运行完美,几乎每个人都在使用 Streambuilder 方法。所以我很好奇我做错了吗?有一个更好的方法吗?这是完整的代码顺便说一句。哪个工作正常,但我只想知道这是否正确?
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
final _initialization = Firebase.initializeApp();

@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _initialization,
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return Center(
child: CircularProgressIndicator(),
//Todo Add splashscreen
);
}
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "MyApp",
initialRoute: FirebaseAuth.instance.currentUser == null
? Routes.loginScreen
: Routes.homePage,
onGenerateRoute: Routes.generateRoute,
);
},
);
}
}

最佳答案

使用 streambuilder 的原因是监视更改并将它们实际反射(reflect)在您的应用程序上。这段代码:

FirebaseAuth.instance.currentUser == null
? Routes.loginScreen
: Routes.homePage,
当您的应用程序运行时,可以正常运行,但只能运行一次。仅当您的应用程序到达该行代码时,它才会捕获身份验证状态。但是如果之后用户注销,应用程序 UI 不会改变,这就是使用流的额外好处的来源。如果在您的应用程序中的任何地方添加了一个退出按钮,您的用户确实会被注销,但仍会在您的应用程序中。登录屏幕将不会返回。
由于您使用的是 FirebaseAuth SDK,建议充分利用它,因为它带有内置流,例如 idTokenChanges , authStateChanges , 和 userChanges ,它们将使您的生活更轻松,您的应用程序代码更优雅。
如果您想保持这样的代码,那很好,但请确保在您的 loginScreen 路由中,您有一个流,它监听 Auth 更改和类似于以下内容的伪代码:
StreamBuilder<User?>(
stream: FirebaseAuth.instance.userChanges(),
initialData: FirebaseAuth.instance.currentUser,
...etc
if (snapshot.data == null)
return LoginScreenLogicWithButtons());

if (snapshot.data != null)
return HomePage();

关于firebase - 这是检查用户是否登录的正确方法吗? flutter 火力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68673592/

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