ダウンロード サンプルファイル (5.3 KB)
ポップアップメニュー(PopupMenuButton)
ポップアップメニューは、マテリアルデザインにおいてはMenusの位置づけのコンポーネントになります。
一般的にはAppBarのようなメニューとともに使われることが多いですが、単体でも利用可能です。基本的なメニューを表示するためのコード例がリスト6で、その実行例が図7です。
PopupMenuButton( // (1) メニューアイテムの作成 itemBuilder: (BuildContext context) =>[ // (2) メニューアイテム PopupMenuItem( child: ListTile( leading: Icon(Icons.add), title : Text('追加') ) ), PopupMenuItem( child: ListTile( leading: Icon(Icons.delete), title : Text('削除') ), ), // (3) 区切り線 PopupMenuDivider(), PopupMenuItem( child : ListTile( title : Text("その他") ) ) ], );
PopupMenuButtonでは、各メニューアイテムを作るためには(1)のようにitemBuilderプロパティを指定し作成します。メニューアイテムは(2)のようにPopupMenuItemで指定します。
そして、区切り線を指定する場合には、(3)のようにPopupMenuDividerを指定します。続いて、ToggledButtonsとPopupMenuButtonを使って、複数の処理を1つのボタンのように作ったコード例がリスト7で、その実行結果が図8です。
// (1) ToggledButton部分の実装例
Widget createActionButton(){
final isSelected = [false, false];
return ToggleButtons(
isSelected: isSelected,
onPressed: (index){},
borderColor: Colors.black54,
borderRadius: BorderRadius.circular(5.0),
children: [
Padding(
padding: EdgeInsets.only(left: 25.0, right: 25.0),
child: Text('変更する')
),
// (2) ドロップダウンボタン
Padding(
padding: EdgeInsets.only(left: 5.0, right: 5.0),
child: createPopupMenuButton2()
),
]
);
}
// (3) ドロップダウンメニュー
PopupMenuButton createPopupMenuButton2(){
return PopupMenuButton(
// (4) 表示アイコン
icon: Icon(Icons.arrow_drop_down),
// (5) メニューの表示位置
offset: Offset(50,50),
itemBuilder: (BuildContext context) => [
//(省略)
],
);
}
(1)がToggledButtonを使ったボタンの実装例で(2)がドロップダウンメニューを表示するための部分です。そして、(3)がドロップダウンメニューの表示メソッドになります。実際のToggleButton側に表示するアイコンを変更するには(4)のように指定します。また、メニューを表示する際にToggleButtons側のウィジェットが消えないようにするには(5)のようにoffsetを指定し表示位置を調整することができます。
まとめ
今回はマテリアルデザインを使ったボタンとメニューコンポーネントについて説明をしました。スマホアプリでは、ユーザがどこを操作すればよいかがすぐ分かるようにすることが大切になります。なお、アプリ設計者はどのボタンをタップしてほしいかという意思も利用者に伝える必要があるので、今回紹介したTextButton、OutlinedButton、ElevatedButtonを使い分けることがマテリアルデザインでは推奨されています。
次回は入力コンポーネントを中心に説明します。また、今回紹介していないドロップダウンもメニューに属していますが、通常は入力として利用されることから、こちらは次回からの入力コンポーネントで説明します。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
