如何从用户登录中获取数据以在主页上显示和更新用户名?

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变量在主屏幕中显示名称。