カテゴリ: FlutterのWeb・デスクトップ対応 更新日: 2026/06/10

FlutterでWeb・デスクトップ対応のUIを作るコツ完全解説 レスポンシブ設計でマルチプラットフォーム開発を成功させる方法

1082
FlutterでWeb・デスクトップ対応のUIを作るコツ(レスポンシブ設計)

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

生徒

「Flutterでスマホアプリを作れるのは知っていますが、Webアプリやデスクトップアプリにも対応できますか?」

先生

「はい、FlutterはWeb対応やWindows、macOS、Linux向けのデスクトップ対応も可能です。1つのコードベースでマルチプラットフォーム開発ができます。」

生徒

「画面サイズが違うのに、同じUIで大丈夫なのですか?」

先生

「そこで重要になるのがレスポンシブ設計です。Flutterのレイアウト機能を活用すれば、Webやデスクトップでもきれいに表示できます。」

生徒

「具体的な作り方を知りたいです。」

先生

「それではFlutterでWeb・デスクトップ対応のUIを作るコツを順番に学びましょう。」

1. FlutterでWeb・デスクトップ開発を行うメリット

1. FlutterでWeb・デスクトップ開発を行うメリット
1. FlutterでWeb・デスクトップ開発を行うメリット

Flutterはモバイルアプリ開発だけでなく、Flutter WebやFlutter Desktopを利用することでWebアプリ開発やデスクトップアプリ開発も可能です。これにより、Android、iOS、Webブラウザ、Windows、macOS、Linuxに同時対応できます。

マルチプラットフォーム開発を行う最大のメリットは、開発コスト削減と保守性向上です。1つのDartコードで複数環境へ対応できるため、企業システムや業務アプリ、社内ツール開発でも注目されています。

しかし、スマートフォンとWebブラウザでは画面サイズや操作方法が大きく異なります。そのため、レスポンシブUI設計が重要になります。

2. MediaQueryを使った画面サイズ判定

2. MediaQueryを使った画面サイズ判定
2. MediaQueryを使った画面サイズ判定

Flutterでレスポンシブデザインを実現する基本は、MediaQueryを使って画面幅を取得することです。画面サイズに応じてレイアウトを変更することで、Web対応やデスクトップ対応がスムーズになります。


import 'package:flutter/material.dart';

class ResponsiveSample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    double width = MediaQuery.of(context).size.width;

    if (width > 1000) {
      return Center(child: Text('デスクトップレイアウト'));
    } else if (width > 600) {
      return Center(child: Text('タブレットレイアウト'));
    } else {
      return Center(child: Text('スマホレイアウト'));
    }
  }
}

このように画面幅を基準にUIを切り替えることで、Flutter WebやFlutter Desktopでも最適な表示が可能になります。業務システム開発や管理画面作成では特に重要なテクニックです。

3. LayoutBuilderで柔軟なUIを構築する

3. LayoutBuilderで柔軟なUIを構築する
3. LayoutBuilderで柔軟なUIを構築する

より高度なレスポンシブ設計を行う場合はLayoutBuilderを活用します。親ウィジェットの制約に応じてレイアウトを切り替えられます。


class LayoutBuilderSample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraints) {
        if (constraints.maxWidth > 800) {
          return Row(
            children: [
              Expanded(child: Container(color: Colors.blue)),
              Expanded(child: Container(color: Colors.green)),
            ],
          );
        } else {
          return Column(
            children: [
              Container(height: 200, color: Colors.blue),
              Container(height: 200, color: Colors.green),
            ],
          );
        }
      },
    );
  }
}

Webアプリでは横並びレイアウト、スマホでは縦並びレイアウトに切り替えるなど、柔軟なUI設計が可能です。Flutterレスポンシブデザインの基本テクニックとして覚えておきましょう。

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

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. ExpandedとFlexibleで比率調整する

4. ExpandedとFlexibleで比率調整する
4. ExpandedとFlexibleで比率調整する

Flutterでデスクトップ対応UIを作る場合、画面の余白が広くなります。そのため、ExpandedやFlexibleを使った比率調整が重要です。


class ExpandedSample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        Expanded(
          flex: 2,
          child: Container(color: Colors.red),
        ),
        Expanded(
          flex: 1,
          child: Container(color: Colors.yellow),
        ),
      ],
    );
  }
}

このようにflexを設定することで、Web画面でもバランスの取れたレイアウトを実現できます。管理画面やダッシュボード開発では特に活躍します。

5. 最大幅を制限して読みやすくする

5. 最大幅を制限して読みやすくする
5. 最大幅を制限して読みやすくする

デスクトップ画面では横幅が広すぎる場合があります。中央寄せしつつ最大幅を制限することで、読みやすいUIになります。


class MaxWidthSample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: ConstrainedBox(
        constraints: BoxConstraints(maxWidth: 900),
        child: Padding(
          padding: EdgeInsets.all(16),
          child: Text('Webやデスクトップでも読みやすい幅に調整'),
        ),
      ),
    );
  }
}

これはFlutter Web開発で非常によく使われるテクニックです。ブログシステムや業務管理アプリ開発でも重要になります。

6. マウス操作とキーボード対応を考慮する

6. マウス操作とキーボード対応を考慮する
6. マウス操作とキーボード対応を考慮する

スマホと違い、デスクトップアプリではマウス操作やキーボード操作が中心になります。FlutterではMouseRegionやFocusウィジェットを活用できます。


class HoverSample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MouseRegion(
      onEnter: (_) => print('マウスが乗りました'),
      child: ElevatedButton(
        onPressed: () {},
        child: Text('ボタン'),
      ),
    );
  }
}

Flutter Desktop対応ではホバー演出やショートカットキー対応も重要です。Webアプリ開発でもユーザー体験向上につながります。

7. Flutter Webビルド方法

7. Flutter Webビルド方法
7. Flutter Webビルド方法

FlutterでWebアプリをビルドするには、flutter build webコマンドを使用します。LinuxやmacOS、Windows環境で実行可能です。


flutter build web
Building for the web... 
✓ Built build/web

デスクトップ向けビルドも可能です。例えばWindows向けにビルドする場合は次の通りです。


flutter build windows
Building Windows application... 
✓ Built build/windows

このようにFlutterはクロスプラットフォーム対応が非常に強力です。Web開発、デスクトップ開発、モバイル開発を一括で管理できるのが大きな魅力です。

まとめ

まとめ
まとめ

FlutterでWeb対応やデスクトップ対応のUIを作るためには、単にアプリをビルドできるという知識だけでは不十分です。重要なのは、レスポンシブ設計を意識したレイアウト構築、画面サイズに応じた柔軟なUI切り替え、そして操作環境の違いを理解することです。Flutterはマルチプラットフォーム開発を強力に支援するフレームワークですが、スマホ、Webブラウザ、Windows、macOS、Linuxでは画面幅や操作方法が大きく異なります。その違いを前提に設計することが成功の鍵となります。

MediaQueryを活用すれば画面サイズ判定が可能になり、スマホレイアウト、タブレットレイアウト、デスクトップレイアウトを明確に分けることができます。これはFlutter Web開発やFlutter Desktop開発における基本中の基本です。また、LayoutBuilderを利用することで、親ウィジェットの制約に応じた高度なレイアウト制御が可能になり、業務システムや管理画面のような複雑なUIにも対応できます。

ExpandedやFlexibleを使った比率調整は、デスクトップ画面の広い領域を無駄なく使うための重要なテクニックです。flex値を調整することで、ダッシュボードや業務アプリに最適な横並びレイアウトを実現できます。さらに、ConstrainedBoxによる最大幅制限は、Webアプリの可読性向上に直結します。横幅が広すぎるUIはユーザー体験を損なうため、中央寄せと最大幅制限は実務でも頻繁に使われます。

デスクトップ対応ではマウス操作やキーボード操作への配慮も欠かせません。MouseRegionによるホバー演出やFocusによるキーボードフォーカス管理は、Webアプリやデスクトップアプリの品質を高めます。スマホアプリ開発だけでなく、Flutterで本格的なWebシステム開発や社内ツール開発を行う場合には、これらの対応が必須になります。

最後にビルド方法も重要です。flutter build webやflutter build windowsなどのコマンドを使い分けることで、同一コードから複数プラットフォームへ展開できます。これこそがFlutterクロスプラットフォーム開発の最大の強みです。レスポンシブデザイン、レイアウト制御、ユーザー操作対応を組み合わせることで、Web対応アプリやデスクトップ対応アプリを高品質に実装できます。

サンプル確認コード

画面幅に応じて表示を切り替える基本的なレスポンシブUIの確認コードをもう一度整理します。Flutter Web開発やデスクトップ対応開発では、このような構造を基本形として覚えておくと応用が効きます。


import 'package:flutter/material.dart';

class ResponsiveSummarySample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    double width = MediaQuery.of(context).size.width;

    return Scaffold(
      body: Center(
        child: width > 900
            ? Text('デスクトップ向けUI')
            : Text('モバイル向けUI'),
      ),
    );
  }
}

このようにシンプルな条件分岐でも、Flutterレスポンシブ設計の基礎は十分に実装できます。ここからLayoutBuilderやExpandedを組み合わせることで、本格的なマルチプラットフォーム対応UIへ発展させることができます。

先生と生徒の振り返り会話

生徒

Flutterはスマホアプリだけでなく、Web対応やデスクトップ対応もできることがよく分かりました。マルチプラットフォーム開発が可能なのは大きな魅力ですね。

先生

その通りです。同じDartコードでAndroid、iOS、Webブラウザ、Windows、macOS、Linuxへ展開できるのはFlutterの強みです。ただしレスポンシブ設計を意識しなければ、きれいなUIにはなりません。

生徒

MediaQueryで画面幅を取得してレイアウトを切り替えるのが基本でしたね。LayoutBuilderを使うとさらに柔軟になることも理解できました。

先生

はい。さらにExpandedやFlexibleで比率を調整し、ConstrainedBoxで最大幅を制限することで、Webアプリやデスクトップアプリでも見やすい画面になります。

生徒

マウス操作やキーボード操作への対応も重要なのですね。スマホとは操作性が違うので注意が必要だと分かりました。

先生

その理解で完璧です。FlutterでWeb対応やデスクトップ対応のUIを作るには、レスポンシブデザインと操作環境の違いを常に意識することが成功への近道です。これからは実際に手を動かして、マルチプラットフォーム開発に挑戦してみましょう。

FlutterのWeb・デスクトップ対応の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク