How to Consume REST API Using Dio Package in Flutter | Flutter REST API Tutorial
In this step-by-step Flutter tutorial, you’ll learn **how to consume a REST API using the Dio package**—one of the most powerful HTTP clients for Flutter and Dart. Whether you’re building a mobile app that fetches data from a server, sends form submissions, or integrates with external APIs, Dio makes HTTP requests easier, faster, and more reliable.
We’ll walk through everything from **installing Dio** to **making GET and POST requests**, handling errors, sending headers, and even parsing JSON responses. This is perfect for **Flutter beginners** as well as **experienced developers** looking for a robust alternative to the default `http` package.
---
**What You’ll Learn:**
* How to install and import the Dio package in Flutter
* How to make GET requests to fetch data from an API
* How to make POST requests to send data
* How to handle query parameters and custom headers
* How to parse JSON responses into Dart models
* How to handle errors and exceptions in Dio
* Pro tips for structuring your API calls in Flutter
---
**Step 1: Install Dio**
In your `pubspec.yaml` file, add:
```yaml
dependencies:
dio: ^5.0.0
```
Then run:
```bash
flutter pub get
```
---
**Step 2: Import Dio and Make a GET Request**
```dart
import 'package:dio/dio.dart';
void fetchData() async {
try {
var response = await Dio().get('https://jsonplaceholder.typicode.com/posts');
print(response.data);
} catch (e) {
print(e);
}
}
```
---
**Step 3: Make a POST Request**
```dart
void sendData() async {
try {
var response = await Dio().post(
'https://jsonplaceholder.typicode.com/posts',
data: {'title': 'New Post', 'body': 'Post Content', 'userId': 1},
);
print(response.data);
} catch (e) {
print(e);
}
}
```
---
**Step 4: Add Headers & Query Parameters**
```dart
var dio = Dio();
dio.options.headers['Authorization'] = 'Bearer YOUR_TOKEN';
var response = await dio.get('https://api.example.com/data', queryParameters: {'page': 1});
```
---
**Pro Tips:**
* Always use `try-catch` for network calls to handle timeouts and server errors.
* Create a separate API service class for better code organization.
* Use interceptors in Dio for logging requests and responses.
* Combine Dio with `json_serializable` to generate model classes automatically.
---
Like, share, and subscribe for more **Flutter, REST API, and mobile app development tutorials**!
\#Flutter #Dio #RESTAPI #FlutterForBeginners #FlutterTutorial #Dart #MobileAppDevelopment #APIIntegration #DioPackage #FlutterRESTAPI #HTTPRequests #FlutterTips