【发布时间】:2018-08-15 02:00:15
【问题描述】:
我正在使用 Google 登录来处理 Flutter 应用中的用户身份验证。这对于单视图应用程序(无路由)非常有用,但是一旦我尝试添加一些路由并有效地管理路由,事情就会变得非常棘手。
如果我错了,请纠正我,但我认为我想要的是顶层的有状态小部件,它控制我的登录变量和身份验证方法。这个顶级有状态小部件还控制我的路由。以下是我当前设置的一些 sn-ps:
class SignInState extends State<SignIn> {
GoogleSignInAccount _currentUser;
...
Future<Null> _handleSignIn() async {
try {
await _googleSignIn.signIn();
} catch (error) {
print(error);
}
}
Future<Null> _handleSignOut() async {
_googleSignIn.disconnect();
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: _pageTitle,
home: new Home(),
routes: <String, WidgetBuilder> {
"/": (BuildContext context) => new Home(),
"/settings": (BuildContext context) => new Settings(),
"/login": (BuildContext context) => new Login()
},
...
);
}
}
我在这里的假设是我的状态会被传递到嵌套的小部件中,但我没有在 Home() 中看到 _currentUser 变量。
在其他框架中,您可以指定在路由加载时运行的方法,如果有一种优雅的方法可以在加载路由之前检查 _currentUser 是否存在,这样我就可以在用户不存在时推送新路由已登录。
如果有人有在 Flutter 应用程序中结合路由和身份验证的经验,我会非常感谢朝着正确方向迈出的一步。我发现的大多数教程都是针对其中的一个。
谢谢!
【问题讨论】:
标签: ios dart google-signin flutter