我正在尝试开发一个由两部分屏幕组成的应用。
身份验证部分
1.1。获取用户详细信息
1.2。获取OTP
首页
2.1仪表板
我已经定义了一个通用小部件,用于切换这些屏幕。它包含状态login
和方法toggleLogin
来更改状态。我还将这个方法传递给所有孩子,以便在这种情况下,我可以在最后一个屏幕Get OTP
屏幕(React js方法)中调用它。
我注意到状态发生了变化,login
状态更改为true
,但条件屏幕开关不起作用。
这是我的工作,
wrapper.dart
// imports
class Wrapper extends StatefulWidget{
@override
_WrapperState createState() => _WrapperState();
}
class _WrapperState extends <State>Wrapper{
bool login;
void toggleLogin(bool state){
setState((){
login = state;
});
}
Wiget build(BuildContext context){
return login ? Dashboard() : GetUserDetails(toggleLogin: toggleLogin);
}
}
get_user_details.dart
// imports
class GetUserDetails extends StatelessWidget{
Function toggleLogin;
GetUserDetails({this.toggleLogin});
Wiget build(BuildContext context){
return Scaffold(
appBar: ....,
body: Container(
// Some UI stuffs.
FlatButton(
child: Text("Next"),
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(builder: (context)=>GetOTP(toggleLogin: toggleLogin));
);
},
),
),
);
}
}
get_otp.dart
// imports
class GetOTP extends StatelessWidget{
Function toggleLogin;
GetOTP({this.toggleLogin});
Wiget build(BuildContext context){
return Scaffold(
appBar: ....,
body: Container(
// Some UI stuffs.
FlatButton(
child: Text("Verify"),
onPressed: (){
if(valid)
toggleLogin(true);
},
),
),
);
}
}
Dashboard.dart
// imports
class Dashboard extends StatelessWidget{
Wiget build(BuildContext context){
return Scaffold(
appBar: ....,
body: Container(
// Some UI stuffs.
),
);
}
}
我通过在toggleLogin
和build
方法内部的适当位置打印来进行测试。更改后,打印的值为true
(根据逻辑)。状态发生了变化,但是没有重新显示屏幕。可能是什么问题?