In this article, we will explore four important keywords in Flutter: Yield, Yield*, Async, and Async*. These keywords are related to asynchronous programming in Flutter and play a crucial role in making applications more responsive and efficient.
Yield
The ‘yield’ keyword is used in the Iterator function in Flutter. It is used to return each element of an Iterable one by one. The Iterator function returns an Iterable object that contains elements that are produced by the generator function. The generator function is used to produce a series of values, which can be used to iterate over a collection.
Example:
Iterable<int> naturalsTo(int n) sync* {
int k = 0;
while (k < n) yield k++;
}
Yield*
The ‘yield*’ keyword is used in the generator function to delegate the control of execution to another generator function. The delegation occurs when the generator function encounters a yield*
expression.
Example:
Iterable<int> flatten(Iterable<Iterable<int>> lists) sync* {
for (Iterable<int> list in lists) {
yield* list;
}
}
Async
The ‘async’ keyword is used in Dart to declare a function that runs asynchronously. Async functions allow you to write non-blocking code and ensure that the function returns immediately, even if the operation takes a long time to complete.
Example:
Future<void> fetchData() async {
String data = await http.get(‘https://example.com/data’);
print(data);
}
Async*
The ‘async*’ keyword is used in Dart to declare an asynchronous generator function. Async generators allow you to generate a stream of values asynchronously. They are useful when you want to produce values one at a time and make sure that the code that consumes the values runs asynchronously.
Example:
csharpCopy codeStream<int> countStream(int to) async* {
for (int i = 1; i <= to; i++) {
yield i;
}
}
In conclusion, the ‘yield’, ‘yield*’, ‘async’, and ‘async*’ keywords play a crucial role in asynchronous programming in Flutter. They allow you to write non-blocking code and ensure that your applications are responsive and efficient. Understanding these keywords and how to use them can help you build better Flutter applications.