问题描述
当前,如果用户成功登录一次,我将启用“保持登录”功能。但是,我仍然要选中“记住我”复选框,以为用户保存成功登录信息。有人可以帮我吗?
需要:一个复选框,如果用户成功登录一次,该复选框使用户能够存储电子邮件和密码。
代码如下所示:
signIn(String email,pass) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
String url = ServerDetails.ip +
':' +
ServerDetails.port +
ServerDetails.api +
'login';
Map<String,String> headers = {"Content-type": "application/json"};
var data = jsonEncode({
'email': email,'password': pass,'token': FirebaseNotifications.fcmtoken
});
var jsonResponse = null;
var response = await http.post(url,headers: headers,body: data);
if (response.statusCode == 200) {
jsonResponse = json.decode(response.body);
if (jsonResponse != null) {
setState(() {
_isLoading = false;
});
sharedPreferences.setString("token",jsonResponse['token']);
sharedPreferences.setString(
"token_expire_date",jsonResponse['token_expire_date']);
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (BuildContext context) => MainPage()),(Route<dynamic> route) => false);
}
} else {
setState(() {
_isLoading = false;
});
Widget okButton = FlatButton(
child: Text("OK"),onpressed: () {
Navigator.push(
context,MaterialPageRoute(builder: (context) => MainPage()));
});
setState(() {
AlertDialog alert = AlertDialog(
title: Text("Error message"),content: Text("Oops! The password is wrong or the email is invalid."),actions: [
okButton,],);
showDialog(
context: context,builder: (BuildContext context) {
return alert;
},);
});
print(response.headers);
print(response.body);
}
}
解决方法
当然,您可以为remember me
创建一个简单的复选框。在登录按钮中,您可以检查是否已选中此复选框。如果是这样,您可以在shared_preferences中设置电子邮件和密码。
下次,当用户再次出现时,您可以从shared_preferences自动获得这些字段。
Here是一个示例。