カテゴリ: FlutterのUI開発 更新日: 2025/12/20

Flutterのナビゲーションと画面遷移を完全マスター!初心者でもわかる画面移動の基本と応用

277
Flutterのナビゲーションと画面遷移の基本と応用

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

生徒

「Flutterでボタンを押したときに別の画面に移動する方法はありますか?」

先生

「FlutterにはNavigatorという機能があって、それを使えば簡単に画面遷移ができますよ。」

生徒

「画面を行ったり来たりするようなアプリも作れるんですか?」

先生

「もちろんです!Flutterでは戻る操作も簡単にできます。では、基本から応用まで順番に見ていきましょう!」

1. Flutterのナビゲーションとは?

1. Flutterのナビゲーションとは?
1. Flutterのナビゲーションとは?

Flutter(フラッター)のナビゲーションとは、ユーザーがある画面から別の画面に移動したり、元の画面に戻ったりする仕組みです。AndroidやiOSアプリの開発において、画面遷移(スクリーンの移動)は非常に重要な要素です。

Flutterでは、NavigatorというウィジェットとMaterialPageRouteを使うことで、画面の切り替えを簡単に実装できます。

2. Navigator.pushで画面を追加する

2. Navigator.pushで画面を追加する
2. Navigator.pushで画面を追加する

Navigator.pushは、現在の画面の上に新しい画面を重ねて表示する方法です。よく使う基本形のコードを見てみましょう。


Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => const SecondPage()),
);

MaterialPageRouteを使って新しい画面(SecondPage)を作り、その画面に遷移します。ユーザーの操作で新しい情報やページを見せたいときに便利です。

3. Navigator.popで前の画面に戻る

3. Navigator.popで前の画面に戻る
3. Navigator.popで前の画面に戻る

ユーザーが戻るボタンを押したときなどに使うのがNavigator.popです。


Navigator.pop(context);

これで前の画面に戻ることができます。戻る処理はAndroid端末では端末の戻るボタン、iOSでは画面左端からのスワイプといった操作でも同様に実行されます。

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

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. 画面間でデータを受け渡す方法

4. 画面間でデータを受け渡す方法
4. 画面間でデータを受け渡す方法

Flutterでは、ある画面から次の画面へデータを渡すことも簡単にできます。


Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => SecondPage(message: 'こんにちは!'),
  ),
);

このようにSecondPageのコンストラクタに値を渡すことで、次の画面でそのデータを表示できます。チャットアプリや入力フォームなど、情報の引き継ぎが必要な場面で活用されます。

5. 遷移先から戻り値を受け取る

5. 遷移先から戻り値を受け取る
5. 遷移先から戻り値を受け取る

Navigator.popで戻る際に、値を返すことも可能です。以下のコードはpopで結果を返し、呼び出し元でその結果を受け取ります。


final result = await Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => const InputPage()),
);
print(result);

// 遷移先の画面で
Navigator.pop(context, 'ユーザーが入力した値');

このように非同期処理を使って、データのやりとりができるため、フォームや選択肢の入力結果などを前の画面に返したい場合に便利です。

6. Navigator.pushReplacementで現在の画面を置き換える

6. Navigator.pushReplacementで現在の画面を置き換える
6. Navigator.pushReplacementで現在の画面を置き換える

pushReplacementは現在の画面を新しい画面で置き換える操作です。戻る操作を無効にしたいときに使います。ログイン後の画面遷移などで利用されます。


Navigator.pushReplacement(
  context,
  MaterialPageRoute(builder: (context) => const HomePage()),
);

戻るボタンを押しても、ログイン画面には戻れないようになります。

7. ルーティングの名前付き設定(named routes)

7. ルーティングの名前付き設定(named routes)
7. ルーティングの名前付き設定(named routes)

Flutterの画面遷移には、ルート名を使ったnamed routesという方法もあります。これにより、アプリ全体で画面を一元管理でき、メンテナンス性が向上します。


void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (context) => const FirstPage(),
      '/second': (context) => const SecondPage(),
    },
  ));
}

// 遷移するには
Navigator.pushNamed(context, '/second');

大規模アプリや複数画面を使うアプリでは、この方法が推奨されます。

8. Flutterの画面遷移でよくあるミスと対策

8. Flutterの画面遷移でよくあるミスと対策
8. Flutterの画面遷移でよくあるミスと対策

初心者がFlutterで画面遷移を扱う際によくあるエラーやミスとして、以下が挙げられます。

  • 画面遷移後に戻る処理を忘れてスタックが溜まる
  • パラメータの渡し方で型エラーが出る
  • contextが存在しない場所でNavigatorを呼び出す

これらの対策として、必ず戻る処理を考慮したUI設計を行い、型安全なデータの受け渡しや、BuildContextの有効範囲を意識したコードを書くことが大切です。

9. 応用編:画面遷移+アニメーション

9. 応用編:画面遷移+アニメーション
9. 応用編:画面遷移+アニメーション

Flutterでは、画面遷移時にアニメーションを付けることも可能です。たとえばフェードインやスライドインなどをカスタムトランジションとして指定できます。


Navigator.push(
  context,
  PageRouteBuilder(
    pageBuilder: (context, animation, secondaryAnimation) => const SecondPage(),
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      return FadeTransition(opacity: animation, child: child);
    },
  ),
);

ユーザーにとって直感的で使いやすいUXを実現するために、アニメーションを活用するのはとても効果的です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flutterの画面遷移とは何ですか?初心者にもわかりやすく知りたいです

Flutterの画面遷移とは、ある画面から別の画面へ移動する操作のことです。Navigatorという仕組みを使うことで、ボタンを押して別ページを開いたり、前の画面に戻ったりできます。アプリ開発では必ず使う重要な機能です。
FlutterのUI開発の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク