我应该如何在颤振应用程序中管理登录页面
Posted
技术标签:
【中文标题】我应该如何在颤振应用程序中管理登录页面【英文标题】:How should I manage login page in flutter app 【发布时间】:2020-07-12 13:18:08 【问题描述】:我正在制作一个以启动画面开头的应用程序。 我想要的是,如果用户第一次签名,它应该重定向到过度登录屏幕。为此,我使用了共享首选项并存储了一个值来检查用户是否是新用户。从霸道开始,它应该在之后进入登录页面登录它将检查用户数据是否存在。在正常情况下,启动后它应该重定向到主屏幕。我的代码正在运行。但问题是我不知道如何安排它。 Main.dart ->(检查是否登录)->(如果已经登录)Home.dart ->(否则检查第一次登录与否)->(如果第一次登录然后)登录屏幕从那里登录屏幕- >else 登录屏幕 如果您需要更多信息,请询问我
这是来自 main.dart 的代码
return SplashScreen.navigate(
name: 'assets/splash.flr',
next: (context)
return AuthService().handleAuth();
,
startAnimation: 'Untitled',
until: () => Future.delayed(Duration(seconds: 4)),
backgroundColor: Colors.white,
);
这是 AuthService().handleAuth() 代码
handleAuth()
return StreamBuilder(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (context, snapshot)
if (snapshot.hasData)
Navigator.maybePop(context);
SharedPrefFunction().saveLoginPreference();
return CheckUser();
else
return LoginScreen();
);
这是入职代码
onTap: ()
Navigator.of(context)
.pushReplacementNamed(LoginScreen.loginRoute);
,
我想从入职到 AuthService().handleAuth()。 我如何从入职屏幕到达那里或向我推荐更好的东西。
【问题讨论】:
【参考方案1】:在你的 main.dart 中
bool loggedIn = false;
@override
void initState()
super.initState();
isUserLoggedIn();
void isUserLoggedIn() async
_loggedIn = await SharedPrefFunction().getLoginPreference()
setState(() => loggedIn = _loggedIn);
Widget build(BuildContext context)
loggedIn ? LoginScreen() : SplashScreen()
【讨论】:
当我从那里进入入职屏幕时,我想使用 StreamBuilder 进入登录页面,这样当我登录时它会带我进入下一页。以上是关于我应该如何在颤振应用程序中管理登录页面的主要内容,如果未能解决你的问题,请参考以下文章