我有一个简单的Google登录屏幕,它可以正常工作。但是它只能工作一次。我回去尝试再次登录后,看到的只是“您当前尚未登录”。重新启动整个应用程序时,我仍然登录。
问题可能在这里某处:
main() {
runApp(MaterialApp(
home: Page1(),
));
}
class Page1 extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: RaisedButton(
child: Text('Go!'),
onPressed: () {
Navigator.of(context).push(_createRoute());
},
),
),
);
}
}
Route _createRoute() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => Page2(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
var begin = Offset(0.0, 1.0);
var end = Offset.zero;
var curve = Curves.ease;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
}
class Page2 extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: SignInDemo(),
);
}
}
void main2() {
runApp(
MaterialApp(
title: 'Google Sign In',
home: SignInDemo(),
),
);
}
class SignInDemo extends StatefulWidget {
@override
State createState() => SignInDemoState();
}
class SignInDemoState extends State<SignInDemo> {
GoogleSignInAccount _currentUser;
String _contactText;
@override
void initState() {
super.initState();
_googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
setState(() {
_currentUser = account;
也许调用正文:类Page2中的SignInDemo()不正确?虽然可以正常运行,但在同一运行中不会再次运行。我意识到该构建仅被调用一次,并且我需要重画Widget(状态)的新实例。但这不是我已经在这里所做的吗?为什么不起作用?
编辑:我将其称为退出并通过摆脱已登录/未登录之间的过渡来解决此问题。如果有人知道如何解决此问题,请提出建议。谢谢