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

У меня есть эта функция, возвращающая значение SharedPreference, сохраненное в ней.

  Future<bool> getLoginStatus() async {
    final prefs = await SharedPreferences.getInstance();
    final loggedInStatus = prefs.getBool("loggedInStatus");

    if (loggedInStatus == null) {
      return false;
    }
    return loggedInStatus;
  }

Выше функция находится в классе с именем "Constants.dart". Когда я делаю тест на извлечение значения из функции "getLoginStatus ()" простой печатью в другом классе.

 print("Login status : " + Constants().getLoginStatus().toString());

Это дает мне ниже в качестве вывода. Почему «Экземпляр будущего»? Почему бы не просто или истина или ложь?

I/flutter (19683): Login status : Instance of 'Future<bool>'

Ответы [ 3 ]

1 голос
/ 28 апреля 2020
getLoginStatus().then((val){ print("Login status : $val"});

Функция then должна использоваться с Futures для доступа к значению, возвращенному из будущего.

1 голос
/ 28 апреля 2020

Так как ваш getLoginStatus () является асинхронным и в будущем он возвращает значение bool. Таким образом, чтобы получить значение, вы должны ждать, пока процесс вернет его.

Таким образом, правильный код для получения значения будет:

bool loggedInStatus = await Constants().getLoginStatus();
print(loggedInStatus);
0 голосов
/ 28 апреля 2020

вы можете получить данные, используя await.

var data  = await Constants().getLoginStatus();
print(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...