PageView
PageViewウィジェットは、複数のページを一度に1つずつめくって見るスクロール領域です。
オンボーディング・画像スライド・左右にめくる画面などに使用します。
定義・役割
PageViewウィジェットは、繰り返される子アイテムをページ単位で配置し、一度に1ページずつスワイプやスクリプトでめくれるようにします。スクロール方向(横/縦)・ページスナップ・スクロールの物理効果・両端の余白などを設定できます。
- カテゴリー: Layouts
- ドロップ時のサイズ: 親レイアウト(Row・Column・Stackなど)の中に入れるとデフォルトは
300 x 200、最上位(親なし)に配置するとキャンバスを埋めるように大きく表示されます。
機能
| 機能 | 説明 |
|---|---|
| ページ単位のスクロール | 一度に1ページずつ表示し、スワイプでページをめくります。 |
| スクロール方向 | 横または縦の方向にページをめくるよう設定します。 |
| ページスナップ | スクロールが終わると、最も近いページへ自動で合わせます。 |
| 繰り返しアイテム | 子を繰り返しレンダリングし、表示するページ数を調整します。 |
| スクリプト制御 | goToPage・nextPage・previousPageなどで表示ページを制御し、ページが変わるとonPageChangedイベントを受け取ります。 |
使い方
- 左のウィジェットパレットでLayoutsカテゴリーを開きます。
- PageView項目をキャンバスにドラッグ&ドロップします。
- 中にページとして表示する子ウィジェットを配置します。
- 右側のPropertiesパネルで
scrollDirection・pageSnappingなどを希望の値に調整します。 - 必要に応じて
onPageChangedにページ切り替え時に実行する動作を接続します。
プロパティ
| プロパティ | 説明 | デフォルト値 | 値 / タイプ |
|---|---|---|---|
scrollDirection | ページをめくる方向 | 横(horizontal) | horizontal, vertical |
itemCount | 表示するページ(アイテム)数 | 0 | 数値(整数) |
reverse | スクロール方向を逆に反転 | false | true / false |
physics | スクロールの物理効果 | 未設定 | bouncing, clamping, alwaysScrollable, rangeMaintaining, neverScrollable, page |
pageSnapping | スクロール後に最も近いページへ自動整列 | true | true / false |
dragStartBehavior | ドラッグ開始の判定方式 | start | down, start |
allowImplicitScrolling | 隣接ページを事前に読み込み(アクセシビリティスクロールを許可) | false | true / false |
restorationId | スクロール位置を復元する識別子 | 未設定 | 文字列 |
clipBehavior | 領域外の内容を切り取る方式 | hardEdge | none, hardEdge, antiAlias, antiAliasWithSaveLayer |
padEnds | 最初と最後のページの両端に余白を追加 | true | true / false |
注意・ヒント
警告
physicsをneverScrollableに設定すると、スワイプでページをめくれません。この場合はスクリプト(goToPage・nextPage・previousPage)でのみページを移動できます。
ヒント
ページが変わったときに実行する動作はonPageChangedに接続します。現在のページ番号は、スクリプトでgetCurrentPage()から確認できます。
さらに詳しく
ヒント
このウィジェットをスクリプトで制御するWidget Control(Property・Method・Event)の全体はPageView Widget Controlドキュメントで確認してください。