Ответ
Асинхронная функция, помеченная ключевым словом async, всегда возвращает объект типа Future<T>. T — это тип реального значения, которое будет вычислено в будущем.
- Если функция возвращает
String, то ее сигнатура будетFuture<String>. - Если функция не возвращает явного значения (
void), то сигнатура —Future<void>.
Пример:
Future<int> fetchUserId() async {
await Future.delayed(Duration(seconds: 1)); // Имитация асинхронной операции
return 42; // Значение 42 будет обернуто в Future<int>
}
Future<void> logMessage(String message) async {
print(message);
// Неявно возвращается Future<void>
}
void main() async {
// Обработка через await
final int id = await fetchUserId();
// Обработка через then/catchError
fetchUserId().then((id) {
print('User ID: $id');
}).catchError((error) {
print('Ошибка: $error');
});
}
Ключевые моменты:
Future— это контейнер для отложенного результата (успешного значения или ошибки).- Ключевое слово
asyncпозволяет использоватьawaitвнутри функции и автоматически оборачивает возвращаемое значение вFuture. - Для работы с
Futureиспользуютсяawait(внутриasync-функций) или методыthen(),catchError(),whenComplete().