【发布时间】:2020-08-26 17:40:15
【问题描述】:
我是 Flutter 和 Firebase 开发的新手,我有一个问题: 我有 2 条路线:SignInRoute 和 HomeRoute,当应用程序启动时,用户将被重定向到取决于 currentUser 的屏幕。 如果 CurrentUser != null => 将他重定向到 homeScreen 否则重定向到 SignInScreen。 如何将此逻辑添加到 main.dart。 这是我的代码,当我运行它时,它总是将 SignInScreen.routeName 作为初始路由:
import 'package:books_library_app/routes.dart';
import 'package:books_library_app/theme.dart';
import 'package:books_library_app/ui/views/home/home_view.dart';
import 'package:books_library_app/ui/views/auth/sign_in_view.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
FirebaseUser user;
@override
void initState() {
super.initState();
getCurrentUser();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: theme(),
initialRoute:
(user != null) ? HomeView.routeName : SignInScreen.routeName,
routes: routes,
);
}
getCurrentUser() async {
FirebaseUser currentUser;
currentUser = await FirebaseAuth.instance.currentUser();
setState(() {
user = currentUser;
});
}
}
【问题讨论】:
-
最直接的方法是创建一个默认登录页面,检查用户是否登录,然后将其转发到相应的页面。
-
我之前试过这个,我创建了一个名为 Welcome 的屏幕 (statefullWidget) 并将其设置为初始路线,在这个小部件中我输入了我的逻辑,但问题是我无法导航到带有命名路线的屏幕,因为在欢迎屏幕中必须返回一个小部件。
-
“必须返回一个小部件”?您的逻辑的哪一部分需要返回一个小部件?
标签: firebase flutter dart firebase-authentication