如何在颤动中使用按钮单击来设置状态?

时间:2021-04-07 05:02:27

标签: flutter

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

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

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

介绍验证码:-

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"),
          ),

但它不起作用。帮帮我

2 个答案:

答案 0 :(得分:0)

检查下面的代码。

   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"),
          ),

答案 1 :(得分:0)

如果您尝试创建包装类而不是切换脚手架的内容会怎样?

也许是这样的:

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

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

答案确实使用了Provider,但它绝对是一个值得考虑学习的包。