Future in Dart#
About#
A Future in Dart represents a potential value or error
that will be available at some point in the future. It is commonly
used for asynchronous operations that might take some time to
complete, such as fetching data from the internet or reading a file.
The Future allows you to write code that will execute
when the operation is complete, without blocking the main thread.
How It Works#
-
Creating a Future: You can create a
Futureto represent an asynchronous operation. TheFuturecan be completed with a value or an error. -
Handling a Future: When you have a
Future, you can use thethenmethod to specify what should happen when theFuturecompletes successfully, and thecatchErrormethod to handle errors. -
Chaining Futures: You can chain multiple
asynchronous operations by returning a
Futurefrom within athencallback.
Example#
Future<String> fetchUserOrder() {
// Simulates a network request that takes 2 seconds to complete.
return Future.delayed(Duration(seconds: 2), () => 'Large Latte');
}
void main() {
fetchUserOrder().then((order) {
print('Order is ready: $order');
}).catchError((error) {
print('Something went wrong: $error');
});
}
Overall#
The Future class in Dart is a key component for
handling asynchronous operations that return a single value or
error. It enables developers to write non-blocking code, ensuring
that applications remain responsive while waiting for time-consuming
tasks to complete. By leveraging Futures, developers
can manage tasks like network requests, file I/O, and database
queries efficiently. The use of then and
catchError methods allows for straightforward handling
of successful results and errors, respectively.
Future is particularly important in environments like
Flutter, where maintaining UI responsiveness is crucial.