SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Flutterで始めるモバイルアプリ開発

Flutterが採用しているマテリアルデザインを使ったコンポーネントを紹介【ボタン編】

Flutterで始めるモバイルアプリ開発 第14回


  • X ポスト
  • このエントリーをはてなブックマークに追加

ポップアップメニュー(PopupMenuButton)

 ポップアップメニューは、マテリアルデザインにおいてはMenusの位置づけのコンポーネントになります。

 一般的にはAppBarのようなメニューとともに使われることが多いですが、単体でも利用可能です。基本的なメニューを表示するためのコード例がリスト6で、その実行例が図7です。

図7:PopupMenuButtonsの実行例
図7:PopupMenuButtonsの実行例
[リスト6]PopupMenuButtoを使ったサンプルコード(lib/menu/PopupMenuButtonWidget.dartの抜粋)
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です。

図8:ドロップダウンボタンの実行例
図8:ドロップダウンボタンの実行例
[リスト7]ToggledButtonとPopupMenuButtonを使ってドロップダウンボタンのサンプルコード(lib/menu/PopupMenuButtonWidget.dartの抜粋)
// (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を使い分けることがマテリアルデザインでは推奨されています。

 次回は入力コンポーネントを中心に説明します。また、今回紹介していないドロップダウンもメニューに属していますが、通常は入力として利用されることから、こちらは次回からの入力コンポーネントで説明します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Flutterで始めるモバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15063 2022/09/05 20:17

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング