目次
概要
Flutterでアプリを開発する時、TikTok
のように画面全体をスクロールする機能を実装したい時があります。この時Flutterが基本的に提供するPageView
ウィジェットを使えば簡単に実装できます。
このブログポストでは、PageView
ウィジェットを使う方法について説明します。
このブログポストで紹介するソースコードは以下のリンクで確認できます。
PageViewウィジェット
Flutterが提供するPageView
ウィジェットはスクロールを通じて画面全体を移動するウィジェットです。PageView
ウィジェットはchildren
プロパティを通じて複数のウィジェットを渡してページを構成できます。
公式ドキュメントを通じてPageView
ウィジェットについて詳しい情報を確認できます。
- 公式ドキュメント: PageView class
PageViewウィジェットの使い方
PageView
はFlutterが基本的に提供するウィジェットなので、次のようにPageView
ウィジェットを簡単に使うことができます。
class MyHomePage extends StatelessWidget {
MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
children: [
Container(
width: double.infinity,
height: double.infinity,
color: Colors.red,
),
Container(
width: double.infinity,
height: double.infinity,
color: Colors.blue,
),
Container(
width: double.infinity,
height: double.infinity,
color: Colors.green,
),
],
),
);
}
}
PageView
ウィジェットのchildren
に表示するウィジェットを一緒に渡すと、次のように画面全体をスクロールしてページを移動できるようになります。
ここでは分かりやすくするためにContainer
ウィジェットを使用しました。
PageContorller
PageContorller
を使用すると初期に表示するページを決定できます。
class MyHomePage extends StatelessWidget {
final pageController = PageController(
initialPage: 1,
);
MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
controller: pageController,
children: [
...
],
),
);
}
}
PageController
のinitialPage
プロパティに初めに表示するページのインデックスを設定できます。このように変更してアプリを再実行すると、初めに表示されるページが変更されたことを確認できます。
scrollDirectionオプション
PageView
ウィジェットはscrollDirection
オプションを通じてスクロール方向を設定できます。基本的にscrollDirection
オプションはAxis.horizontal
に設定されていますが、これをAxis.vertical
に設定して垂直方向にスクロールできます。
PageView(
controller: pageController,
scrollDirection: Axis.vertical,
children: [
...
],
)
このように修正して実行すると、次のように垂直方向にスクロールできるページを確認できます。
onPageChangedオプション
PageView
ウィジェットはonPageChanged
オプションを通じてページが変更された時に呼び出されるコールバック関数を設定できます。これを通じてページが変更された時に追加的な作業を行うことができます。
PageView(
controller: pageController,
onPageChanged: (index) {
print('Page changed to $index');
},
children: [
...
],
)
PageView Builder
PageView
ウィジェットはPageView.builder
コンストラクタを通じて動的にページを作成することができます。PageView.builder
コンストラクタはitemBuilder
プロパティを通じてページを作成する関数を渡すことができます。
PageView.builder(
controller: pageController,
itemCount: 10,
itemBuilder: (context, index) {
return Container(
width: double.infinity,
height: double.infinity,
color: index % 2 == 0 ? Colors.red : Colors.blue,
);
},
)
完了
今回のブログポストではFlutterが基本的に提供するPageView
ウィジェットを使ってページ全体をスクロールする方法について説明しました。PageView
ウィジェットを使うと簡単にページ全体をスクロールでき、scrollDirection
オプションを通じてスクロール方向を設定できます。
PageView
を使うと、TikTok
のように画面全体をスクロールする機能を簡単に実装できます。もし、実装中のアプリが画面全体をスクロールする機能が必要なら、PageView
ウィジェットを使って実装してみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。