В Dart и Flutter класс Future
используется для представления потенциально отложенной или асинхронной операции. При работе с асинхронным кодом вы можете столкнуться со сценариями, когда вам необходимо извлечь объекты из объекта Future<>
. В этой статье мы рассмотрим различные методы извлечения объектов из Future<>
в Dart Flutter, попутно предоставляя разговорные объяснения и примеры кода.
Методы извлечения объектов из будущего<>в Dart Flutter:
- Использование ключевого слова
await
.
Ключевое словоawait
используется для приостановки выполнения кода до тех пор, пока не будетFuture
. завершает. Чтобы получить объект изFuture<>
, вы можете использоватьawait
в функцииasync
. Вот пример:
Future<String> fetchData() async {
// Simulating an asynchronous operation
await Future.delayed(Duration(seconds: 2));
return 'Data from the future!';
}
void main() async {
String data = await fetchData();
print(data); // Output: Data from the future!
}
- Использование метода
then()
:
Методthen()
позволяет зарегистрировать функцию обратного вызова, которая выполняется, когдаFuture
>завершает. Вы можете получить объект внутри функции обратного вызова. Вот пример:
Future<String> fetchData() {
return Future.delayed(Duration(seconds: 2), () => 'Data from the future!');
}
void main() {
fetchData().then((data) {
print(data); // Output: Data from the future!
});
}
- Использование виджета FutureBuilder:
Во Flutter вы можете использовать виджетFutureBuilder
для извлечения объектов изFuture<>
и соответствующего обновления пользовательского интерфейса.FutureBuilder
принимаетFuture<>
и функцию-строитель, которая вызывается с результатом после завершенияFuture
. Вот пример:
Future<String> fetchData() {
return Future.delayed(Duration(seconds: 2), () => 'Data from the future!');
}
void main() {
runApp(MaterialApp(
home: Scaffold(
body: FutureBuilder<String>(
future: fetchData(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data!); // Output: Data from the future!
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return CircularProgressIndicator();
}
},
),
),
));
}
Извлечение объектов из Future<>
в Dart Flutter имеет решающее значение при работе с асинхронными операциями. В этой статье мы рассмотрели три различных метода: использование ключевого слова await
, метода then()
и виджета FutureBuilder
. Каждый метод предоставляет способ извлечения объектов из Future<>
в соответствии с вашими конкретными требованиями. Используя эти методы, вы можете эффективно обрабатывать асинхронные операции в своих приложениях Flutter.