Как получить данные от логина пользователя для отображения и обновления имени пользователя на главной странице? - PullRequest
0 голосов
/ 01 мая 2020

Здесь у меня уже есть запрос 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;
  }

А ниже здесь я пытаюсь динамически обновить имя пользователя для отображения на главной странице. из логина. Как бы я мог вернуть идентификатор пользователя, вошедшего здесь?

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;

    });

}

1 Ответ

1 голос
/ 01 мая 2020

Вы должны сохранить 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 кнопки входа в систему, затем получите это значение ключа "имя" на главном экране. как показано ниже.

SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("name");

Пожалуйста, добавьте две выше строки в методе initState ()

, после этого вы можете использовать переменную name для отображения имени на главном экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...