[基本上,我正在创建一个在线产品应用程序,只要用户选择任何产品并单击结帐按钮,它就会检查用户是否登录。在这里,我做了同样的事情,我选择了一个产品,然后进入购物车页面,然后单击“结帐”按钮(这里我没有登录),因此它进入了登录页面并保存了变量,然后我转到购物车页面并单击了“结帐”按钮再次进入登录页面。我已经将变量保存在登录页面中,但是为什么不进行验证。
Loginpage.dart
Future<UserRegister> getLogin(UserLogin userLogin) async{
final String apiUrl="http://cashback.us-east-2.elasticbeanstalk.com/user/login";
var userLoginJson = userLogin.toJson();
final response=await http.post(apiUrl,body: json.encode(userLoginJson),headers: {"content-type" : "application/json",
"Accept": "application/json",}
);
print(response);
if(response.statusCode >= 200 && response.statusCode < 300){
final responseString=response.body;
print(responseString);
var result = userRegisterFromJson(responseString);
print(result.user.userId);
print(result.user.name);
print(result.user.token);
print(result.user.mobile);
print(result.user.isDriver);
print(result.driver.driverId);
prefs.setBool('login', true);
prefs.setString('userid', result.user.userId.toString());
prefs.setString('name', result.user.name);
prefs.setString('mobile', result.user.mobile); //Here i am storing the values
prefs.setString('isDriver', result.user.isDriver.toString());
prefs.setString('driverId', result.driver.driverId.toString());
prefs.setString('token', result.user.token);
return result;
}else{
final responseString=response.body;
var result = json.decode(responseString);
print(result);
return null;
}
}
RaisedButton(
onPressed(){
getLogin(login);
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => MainPage()));
}
)
Cartpage.dart
SharedPreferences logindata;
bool newuser;
PlatformButton(
onPressed: (){
check_if_already_login();
},
child: Text('Checkout',style: TextStyle(color: Colors.white),),
androidFlat: (_) =>
MaterialFlatButtonData(color: Colors.cyan),
ios: (_) =>
CupertinoButtonData(color: Colors.cyan)
),
Future<void> check_if_already_login() async {
logindata = await SharedPreferences.getInstance();
newuser = (logindata.getBool('login') ?? true);
Navigator.pushReplacement(
context, new MaterialPageRoute(builder: (context) => Login()));
if (newuser == false) {
print(false);
}
}
因为您将Navigator.pushReplacement
放在if
语句之前因此它将直接转到Login
页面您可以在Navigator.pushReplacement
中移动if
您可以从
Navigator.pushReplacement(
context, new MaterialPageRoute(builder: (context) => Login()));
if (newuser == false) {
to
if (newuser == false) {
Navigator.pushReplacement(
context, new MaterialPageRoute(builder: (context) => Login()));
print(false);
}