カテゴリ: Flutterの機能拡張 更新日: 2025/10/29

Flutterのネットワーク通信の基本を解説!httpとDioの使い方と実装例まとめ

278
Flutterのネットワーク通信(http / Dio)の基本と実装例

先生と生徒の会話形式で理解しよう

生徒

「Flutterでネットワーク通信ってどうやるんですか?APIからデータを取りたいんですけど…」

先生

「FlutterでAPI通信を行うには、httpパッケージやDioパッケージを使うのが一般的ですよ。」

生徒

「httpとDioって何が違うんですか?初心者はどっちを使えばいいですか?」

先生

「それぞれ特徴があるので、今回はhttpとDioの基本と実装方法を比較しながら解説しましょう!」

1. Flutterでのネットワーク通信とは?

1. Flutterでのネットワーク通信とは?
1. Flutterでのネットワーク通信とは?

Flutterでネットワーク通信を行うとは、Web API(外部のサーバー)とデータのやりとりを行うことです。例えば、天気情報アプリで最新の天気を取得したり、ニュースアプリで記事一覧を取得する場合などに使われます。

Flutterでネットワーク通信を実装するには、主に以下の2つのパッケージがよく使われます:

  • httpパッケージ:軽量で公式パッケージ。シンプルな用途に向いています。
  • Dioパッケージ:機能が豊富で、リトライ処理・ログ出力・インターセプターなどの機能が使えます。

2. httpパッケージの基本的な使い方

2. httpパッケージの基本的な使い方
2. httpパッケージの基本的な使い方

まずはhttpパッケージの基本的な使い方を紹介します。Flutterプロジェクトにhttpパッケージを追加するには、pubspec.yamlに以下を追加します。


dependencies:
  http: ^0.13.5

次に、APIからデータを取得する簡単なコード例を見てみましょう。


import 'package:http/http.dart' as http;
import 'dart:convert';

Future<void> fetchData() async {
  final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
  if (response.statusCode == 200) {
    final data = json.decode(response.body);
    print(data);
  } else {
    print('通信に失敗しました');
  }
}

このように、http.get()でデータを取得し、json.decode()でJSONをMap形式に変換できます。

3. Dioパッケージの使い方とメリット

3. Dioパッケージの使い方とメリット
3. Dioパッケージの使い方とメリット

Dioはhttpよりも高機能で、実務レベルではよく使われるパッケージです。まずはpubspec.yamlに以下を追加します。


dependencies:
  dio: ^5.3.2

次に、Dioを使って同じようにAPI通信する例を見てみましょう。


import 'package:dio/dio.dart';

Future<void> fetchDataWithDio() async {
  final dio = Dio();
  try {
    final response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
    print(response.data);
  } catch (e) {
    print('エラーが発生しました: $e');
  }
}

Dioは、エラーハンドリングがしやすく、タイムアウトやログ出力、トークン付きリクエストなども簡単に扱える点が大きなメリットです。

Flutterを「実務レベル」で使えるようになりたい人や、 iPhone / Android両対応アプリ開発の流れをまとめて学びたい人には、 定番の実践書がこちらです。

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. httpとDioの違いを比較

4. httpとDioの違いを比較
4. httpとDioの違いを比較

Flutter初心者がどちらを選ぶべきか迷うところですが、以下のような比較ができます。

項目 httpパッケージ Dioパッケージ
使いやすさ 簡単でシンプル やや複雑
機能の豊富さ 最低限 多機能(ログ、トークン、リトライなど)
エラーハンドリング 自前で実装が必要 try-catchで簡単に管理可
向いている用途 小規模アプリ・学習用 実務・中〜大規模アプリ

5. JSONデータの表示方法(UIとの連携)

5. JSONデータの表示方法(UIとの連携)
5. JSONデータの表示方法(UIとの連携)

取得したデータはFlutterのウィジェットで表示することも重要です。例えばFutureBuilderを使えば、非同期で取得したJSONを画面に反映できます。


FutureBuilder(
  future: fetchData(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('エラーが発生しました');
    } else {
      return Text(snapshot.data.toString());
    }
  },
)

このようにFutureBuilderを活用することで、APIのレスポンスをUIに結びつけて表示できます。

6. Dioでインターセプターやトークン処理もできる

6. Dioでインターセプターやトークン処理もできる
6. Dioでインターセプターやトークン処理もできる

Dioの大きな利点は、HTTPリクエストの前後に処理を挟める「インターセプター」が使える点です。例えば、APIトークンを自動付与するような処理を一元管理できます。


dio.interceptors.add(InterceptorsWrapper(
  onRequest: (options, handler) {
    options.headers['Authorization'] = 'Bearer YOUR_TOKEN_HERE';
    return handler.next(options);
  },
));

このようにして、毎回ヘッダーを手動で追加する手間を省けるのがDioの便利なポイントです。

7. Flutterのネットワーク通信で注意すべきポイント

7. Flutterのネットワーク通信で注意すべきポイント
7. Flutterのネットワーク通信で注意すべきポイント

Flutterでネットワーク通信を行う際には、以下の点にも注意しましょう。

  • AndroidManifestやiOSの設定:インターネットを使うにはAndroidやiOSの設定ファイルで通信許可を有効にする必要があります。
  • 非同期処理:awaitasyncの使い方を正しく理解しておくこと。
  • JSONのパース:json.decode()だけでなく、モデルクラスに変換する習慣も大事。
Flutterの機能拡張の一覧へ
新着記事
Java の HashMap から特定のキーや値を検索する(containsKey, containsValue)
JavaのHashMapでキーや値を検索する方法を完全解説 containsKeyとcontainsValueの使い方入門
Flutterのリスト表示を学ぼう!ListView・GridViewの使い方
Flutterのリスト表示をマスター!初心者向けListView・GridViewの使い方完全ガイド
Java の HashMap を作成してデータを追加・取得する方法
JavaのHashMapの使い方を完全解説!初心者でもわかる作成・追加・取得の基本
【AWS】S3のエラーコード一覧と原因・対処法【403・404・503など】
【AWS】S3のエラーコード一覧と原因・対処法【403・404・503などを徹底解説】
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク