Можете ли вы преобразовать Future <String>в строку? Детонация / дротик - PullRequest
1 голос
/ 27 февраля 2020

Можете ли вы преобразовать Future<String> в String? Каждый раз, когда я запускаю свое приложение, оно должно получать данные из базы данных, сохранять их в файле .csv, читать файл .csv и обновлять некоторые строковые переменные. Я хочу, чтобы мое приложение работало в автономном режиме.

Я ищу решение, подобное этому:

String string;
Future<String> = futureString;

if (futureString == null) {
  string = '{standard value}'; 
} else {
  string = futureString;
}

Я надеюсь, что вы, ребята, получите представление и сможете мне помочь! Спасибо!

Ответы [ 2 ]

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

Сначала вам нужно узнать о Асинхронном программировании на языке дартс.

Вот пример, который поможет вам понять, как Future немного работает в дартс.

void main() async {
  Future<String> futureString = Future.value('Data from DB');

  print(futureString); // output: Instance of '_Future<String>'
  print(await futureString); // output: Hi there

  if (await futureString == null) {
    print('No data');
  }
}
0 голосов
/ 27 февраля 2020

Вам просто нужно await для значения:

string = await futureString;

Поскольку значение равно Future<String>, ключевое слово await будет ждать, пока задача завершится sh, и вернет значение не переходя к следующему оператору .

Обратите внимание, что для использования await необходимо сделать метод async ronous yourMethod() async {}

Или использовать обратный вызов then:

futureString.then((value) {
  string = value;
});

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

...