Flutter Общие настройки Вход не работает должным образом - PullRequest
0 голосов
/ 21 июня 2020

Я создал страницу входа, пользователь может войти в систему, но проблема в том, что после перехода на новый экран userId не передается из общих настроек. Если я закрою и снова открою приложение, тогда userId будет передан правильно. Как мне с этим справиться.

Future loginUser(String email, String password) async {
  String url = 'https://androidapp.factory2homes.com/api/login';
  final response =
      await http.post(url, body: {'email': email, 'password': password});
  print(response.body);
  var result = jsonDecode(response.body);
  return result;
}
onPressed: ()  async {
                    var email = emailController.text;
                    var password = passwordController.text;
                    setState(() {
                      message = 'Please wait...';
                    });
                    var result = await loginUser(email, password);
                    if(result ['result']== true ){
                      SharedPreferences _prefs = await SharedPreferences.getInstance();
                      _prefs.setInt('userId', result['user']['id']);
                      _prefs.setString('userName', result['user']['name']);
                      _prefs.setString('userEmail', result['user']['email']);

                      Navigator.push(context, MaterialPageRoute(builder: (context)=>HomeScreen()));
                    } else {
                      print('incorrect password');
                    }

                  },

1 Ответ

1 голос
/ 21 июня 2020

Добавьте ожидание, поскольку setInt и setString оба используют Future, которые выполняют операцию асинхронно

   await _prefs.setInt('userId', result['user']['id']);
   await _prefs.setString('userName', result['user']['name']);
   await _prefs.setString('userEmail', result['user']['email']);
...