尽管调用了StatefulWidget,但并未再次调用构建函数

时间:2020-08-07 11:25:50

标签: android flutter dart

我有一个简单的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(状态)的新实例。但这不是我已经在这里所做的吗?为什么不起作用?

编辑:我将其称为退出并通过摆脱已登录/未登录之间的过渡来解决此问题。如果有人知道如何解决此问题,请提出建议。谢谢

0 个答案:

没有答案