我有一个布尔值 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"),
),
但它不起作用。帮帮我
答案 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,但它绝对是一个值得考虑学习的包。