флаттер: я не могу сохранить логин - PullRequest
0 голосов
/ 14 февраля 2020

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

это мой метод API для входа

Future<dynamic> login(String email, String password ) async {
    final Map<String, dynamic> body = {'email': email, 'password': password  };

    _isLoading = true;
    notifyListeners();

    http.Response response = await http.post(Environment.userLogin,
        body: json.encode(body), headers: Environment.requestHeader);

        SharedPreferences prefs = await SharedPreferences.getInstance();

    Map<String, dynamic> res = json.decode(response.body);
    var results;
    if (res['code'] == 200) {

      _user = User.fromJson(res['message']);

      prefs.setString('email', _user.email);
      results = true;
    } else {

      results =
          FailedRequest(code: 400, message: res['error'], status: false);
    }

    _isLoading = false;
    notifyListeners();
    return results;
  }

и это основная функция

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var email = prefs.getString('email');
  print(email);
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]).then((_) => runApp(new MyApp()));

}

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 14 февраля 2020

Пример на DartPad

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: FutureBuilder(
        future: SharedPreferences.getInstance(),
        builder: (BuildContext context, AsyncSnapshot<SharedPreferences> snapshot) {
          if (!snapshot.hasData) return Container();

          final isLoggedIn = snapshot.data.getString("email") != null;
          return isLoggedIn ? Home() : Login();
        },
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...