Flutter 如何从用户登录中获取数据以在主页上显示和更新用户名?
在这里,我已经在登录页面上有一个Get请求,从前端获取数据Flutter 如何从用户登录中获取数据以在主页上显示和更新用户名?,flutter,dart,sharedpreferences,Flutter,Dart,Sharedpreferences,在这里,我已经在登录页面上有一个Get请求,从前端获取数据 //String url = 'http://localhost:9000/user/john.doe@email.com'; String url = "http://10.0.2.2:9000/user/john.doe@email.com/"; Future<int> makeLoginRequest() async { var response = await http .get(
//String url = 'http://localhost:9000/user/john.doe@email.com';
String url = "http://10.0.2.2:9000/user/john.doe@email.com/";
Future<int> makeLoginRequest() async {
var response = await http
.get(Uri.encodeFull(url), headers: {"Accept": "application/json"});
var userData = json.decode(response.body);
int userId = userData['Id'];
return userId;
}
下面我尝试动态更新用户名,以显示在登录的主页上。
如何从登录此处的用户返回id
String name = "";
@override
initState() {
super.initState();
getNamePreference().then(updateName);
}
Future<String> getNamePreference() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("name");
return name;
}
void updateName(String incomingName) {
setState(() {
name = incomingName;
});
}
您必须在登录屏幕的SharedReference中保存firstName,如下所示 在登录按钮的onClick事件中调用此方法 然后在主屏幕中获取key name的这个值,如下所示 请在initState方法中添加以上两行
之后,您可以使用name变量在主屏幕中显示name。您将name键的值保存在SharedReference中的何处?它位于Rest api上,包含mysql数据库中的数据{Id:1,姓:约翰,姓:Doe,城市:洛杉矶,年龄:23岁,性别:男性,专业:学生,电子邮件:约翰。doe@email.com,用户名:jdoe,密码:abc123,createdAt:2020-04-2419:45:38,deletedAt:null,id:1}他们是否仍在使用Future?此处不需要Future我得到userData的一个错误。我们必须定义它?对于set string,我们必须返回它?请向上投票并接受我的答案,以便其他用户可以从中受益
String url = "http://10.0.2.2:9000/user/john.doe@email.com/";
void makeLoginRequest() async {
var response = await http
.get(Uri.encodeFull(url), headers: {"Accept": "application/json"});
var userData = json.decode(response.body);
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString("name", userData['firstName'];);
...
//code for navigate to main screen
...
}
SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("name");