こんにちは、フラメルです。
今回は2つ以上のスクリーン間で画面遷移する方法を紹介します。
目次
下準備
今回は下記コードのFirstScreen
とSecondScreen
で画面遷移させるコードを書いていきます。
import 'package:flutter/material.dart';
class FirstScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('スクリーン1'),
automaticallyImplyLeading: false,
),
body: Center(
child: ElevatedButton(
child: Text('スクリーン2'),
onPressed: () {},
),
),
);
}
}
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('スクリーン2'),
automaticallyImplyLeading: false,
),
body: Center(
child: ElevatedButton(
child: Text('スクリーン1'),
onPressed: () {},
),
),
);
}
}
ステップ1:ルートを定める
MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => FirstScreen(),
'/second': (context) => SecondScreen(),
},
),
MaterialApp
のroutes
で上記コードのように画面遷移させるスクリーンのルートを定めます。
routes
で定めたスクリーンで初めに表示させたいスクリーンのキーをinitialRoute
に渡します。今回の場合FirstScreen
が初期画面になります。
ステップ2:画面遷移させる
ElevatedButton(
child: Text('スクリーン2'),
onPressed: () {
Navigator.pushNamed(context, '/second');
},
),
任意のスクリーンに画面遷移させるにはNavigator.pushNamed
を使用します。
上記コードでは先ほどroutes
で定めたルート/second
に画面遷移します。
サンプルコード
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => FirstScreen(),
'/second': (context) => SecondScreen(),
},
),
);
class FirstScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('スクリーン1'),
automaticallyImplyLeading: false,
),
body: Center(
child: ElevatedButton(
child: Text('スクリーン2'),
onPressed: () {
Navigator.pushNamed(context, '/second');
},
),
),
);
}
}
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('スクリーン2'),
automaticallyImplyLeading: false,
),
body: Center(
child: ElevatedButton(
child: Text('スクリーン1'),
onPressed: () {
Navigator.pushNamed(context, '/');
},
),
),
);
}
}
以上です。