Тип Future
Тип Future<T> обозначает будущий результат
типа T. Сейчас значения может ещё не быть:
оно появится, когда асинхронная работа завершится.
Завершённый результат читают через await
внутри функции с пометкой async.
У функции с такой пометкой тип результата
сам становится Future. Если функция
ничего полезного не возвращает, её тип -
Future<void>. Ошибка завершения - отдельный
исход, это не значение типа T.
Синтаксис
Future<int> name = Future.value(5);
Future<String> name = Future(() => 'abcde');
Пример
Давайте создадим уже готовый будущий результат и дождёмся его:
void main() async
{
Future<int> res = Future.value(5);
print(await res);
}
Результат выполнения кода:
5
Пример
Давайте получим строку из функции с пометкой
async. Её результат имеет тип Future<String>:
Future<String> load()
{
return Future.value('abcde');
}
void main() async
{
print(await load());
}
Результат выполнения кода:
"abcde"
Пример
Давайте отложим вычисление до будущего и дождёмся суммы:
void main() async
{
Future<int> res = Future(() {
return 2 + 3;
});
print(await res);
}
Результат выполнения кода:
5