繁体   English   中英

如何使用 flutter 中的按钮单击设置 state?

[英]How to set state using button click in flutter?

我有一个 boolean isUserLoggedIn = false; 在我的 main.dart 文件中,当 isUserLoggedIn = false 我正在加载

Widget build(BuildContext context) {
return Scaffold(
  body: isUserLoggedIn == false ? IntroAuthScreen() : HomePage(),
);

这工作正常。 IntroAuthScreen 正在加载。 但是 IntroAuthScreen 中有一个按钮,当用户单击该按钮时,我希望 isUserLoggedIn 的值为 true,并且他将被重定向到 HomePage(),如上面的代码所示。

IntroAuthCode:-

child: ElevatedButton.icon(
            icon: Icon(
              Icons.navigate_next,
              color: Colors.white,
            ),
            onPressed: () {
              setState(() {
                username = usernameController.text;
                isUserLoggedIn = true;
              });
              print(username);
              Navigator.pop(context);
            },
            label: Text("Finish"),
          ),

但它不工作。 帮我

检查下面的代码。

   Widget build(BuildContext context) {
        return Scaffold(
          body: isUserLoggedIn == false ? IntroAuthScreen() : HomePage(),
        );
    
        IntroAuthScreen() async {
            bool isLoggedIN = await Navigator.push(MaterialPageRoute Bla Bla);
             setState((){
                isUserLoggedIn = isLoggedIN ?? false;
             });
        }
    }

在验证码中

child: ElevatedButton.icon(
            icon: Icon(
              Icons.navigate_next,
              color: Colors.white,
            ),
            onPressed: () {
              setState(() {
                username = usernameController.text;
                isUserLoggedIn = true;
              });
              print(username);
              Navigator.pop(context, isUserLoggedIn);
            },
            label: Text("Finish"),
          ),

如果您尝试创建一个包装器 class 而不是切换脚手架的内容怎么办?

也许是这样的:

class AuthWrapper extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final _user = Provider.of<User>(context);

    return (_user == null) ? IntroAuthScreen() : HomeScreen();
  }
}

答案确实使用了Provider,但绝对值得考虑学习的package。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM