Why asynchronous code matters in Flutter?

Asynchronous operations let your program complete work while waiting for another operation to finish. Here are some common asynchronous operations:
- Fetching data over a network.
- Writing to a database.
- Reading data from a file.
To perform asynchronous operations in Dart, you can use the Future
class and the async
and await
keywords.
What is a future?
A future (lower case “f”) is an instance of the Future (capitalized “F”) class. A future represents the result of an asynchronous operation, and can have two states: uncompleted or completed.
Note: Uncompleted is a Dart term referring to the state of a future before it has produced a value.
Uncompleted
When you call an asynchronous function, it returns an uncompleted future. That future is waiting for the function’s asynchronous operation to finish or to throw an error.
Completed
If the asynchronous operation succeeds, the future completes with a value. Otherwise it completes with an error.
Completing with a value
A future of type Future<T>
completes with a value of type T
. For example, a future with type Future<String>
produces a string value. If a future doesn’t produce a usable value, then the future’s type is Future<void>
.
Completing with an error
If the asynchronous operation performed by the function fails for any reason, the future completes with an error.