Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从用户登录中获取数据以在主页上显示和更新用户名?_Flutter_Dart_Sharedpreferences - Fatal编程技术网

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

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(

在这里,我已经在登录页面上有一个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");