
A few examples of using Future, async, and await in Flutter applications.
Simple Example
This example simply prints “Doing…” and “Task completed!” to the console. However, the first will appear before the later 2 seconds.
The code:
import 'package:flutter/foundation.dart' show debugPrint;
Future<void> doSomething() {
return Future.delayed(const Duration(seconds: 2), () {
debugPrint('Task completed!');
});
}
void main() {
doSomething();
debugPrint('Doing...');
}When looking at your terminal window, you’ll see “Doing…“ before “Task completed!” like this:

Fetching Data From APIs
Fetching data from APIs on remote servers is one of the most common use cases of Future, async, and await in Flutter. For convenience, you should install the http package, a Future-based library for making HTTP requests.
To install the http package, add http and its version to the dependencies section in your pubspec.yaml file by executing this:
flutter pub add httpThen run this command:
flutter pub getThe code:
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
Future<void> loadData() async {
// This is an open api for testing
// Thanks to the Typicode team
final url = Uri.parse('https://api.slingacademy.com/v1/sample-data/users');
try {
final http.Response response = await http.get(url);
final loadedTodos = json.decode(response.body);
if (kDebugMode) {
print(loadedTodos);
}
} catch (err) {
rethrow;
}
}
// Call the _loadData function somewhere
void main() {
loadData();
}Output:
{success: true, message: Sample data for testing and learning purposes, total_users: 1000, offset: 0, limit: 10, users: [{id: 1, gender: female, date_of_birth: 2002-04-26T00:00:00, job: Herbalist, city: Humphreyfurt, zipcode: 79574, latitude: 13.032103, profile_picture: https://api.slingacademy.com/public/sample-users/1.png, email: [email protected], first_name: Kayla, last_name: Lopez, phone: +1-697-415-3345x5215, street: 3388 Roger Wells Apt. 010, state: Vermont, country: Jordan, longitude: 112.16014}, {id: 2, gender: female, date_of_birth: 1924-05-14T00:00:00, job: Technical author, city: West Angelaside, zipcode: 44459, latitude: 51.5214995, profile_picture: https://api.slingacademy.com/public/sample-users/2.png, email: [email protected], first_name: Tina, last_name: Patrick, phone: 800-865-4932, street: 4564 Gamble Light Suite 885, state: Kansas, country: Greenland, longitude: -21.22766}, {id: 3, gender: female, date_of_birth: 1998-04-23T00:00:00, job: P<…>If you want to fully print a very long output, see this article: How to Fully Print a Long String/List/Map in Flutter.
Further reading:
- Flutter: ListView Pagination (Load More) example
- Best Libraries for Making HTTP Requests in Flutter
- Flutter & Hive Database: CRUD Example
- Flutter: Firebase Remote Config example
- How to encode/decode JSON in Flutter
- Using Try-Catch-Finally in Dart (3 examples)
- Using List.generate() in Flutter and Dart (4 examples)
You can also check out our Flutter category page or Dart category page for the latest tutorials and examples.