如何从用户登录中获取数据以在主页上显示和更新用户名?
How to get data from the user login to display and update the username on the main page?
这里是我在登录页面已经有一个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;
}
在下面,我尝试动态更新用户名以显示在登录主页上。
我如何 return 从这里登录的用户的 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;
});
}
您必须将 firstName 保存在登录屏幕的 sharedpreference 中,如下所示..
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
...
}
在登录按钮的onClick事件中调用该方法
然后在主屏幕中获取键 "name" 的值,如下所示..
SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("name");
请在 initState() 方法中添加以上两行
之后您可以使用name
变量在主屏幕中显示名称。
这里是我在登录页面已经有一个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;
}
在下面,我尝试动态更新用户名以显示在登录主页上。 我如何 return 从这里登录的用户的 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;
});
}
您必须将 firstName 保存在登录屏幕的 sharedpreference 中,如下所示..
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
...
}
在登录按钮的onClick事件中调用该方法
然后在主屏幕中获取键 "name" 的值,如下所示..
SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("name");
请在 initState() 方法中添加以上两行
之后您可以使用name
变量在主屏幕中显示名称。