SHOEISHA iD

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

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

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

Flutter3へのアップグレードでどう変わる?――注目の新規機能と重要な変更点を解説

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

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

Material 3へのサポート

 前回まで利用してきたウィジェットはMaterial 2でした。これらのウィジェットがバージョンアップし、Flutter 3では、Material 3がサポートされるようになりました。

 Material 3のサイトとMaterial 2のサイトを見比べると大きな違いがあるように感じます。そこで、これまで作ってきたコードはどうなるのかという視点を中心に、変更点や特徴などを見ていきます。

 ただし、現時点(2022年5月30日)ではすべてのコンポーネントでMaterial 3への対応が終わったわけではなく、まだ、対応中のものもあります。また、Flutter3になると自動的にMaterial 3のコンポーネントに置き換わる訳ではありません。従って、現在、開発しているアプリであれば、引き続きMaterial 2をそのまま利用しても構いません。

Material 3の特徴

 Material 3の大きな大きな特徴は、アプリ利用者がボタンの色や形状を好みのスタイルにカスタマイズできるということです。それは、もともとの名称「Material You」からも見てとれます。

 最近、利用者がUIやデザインのテーマをカスタマイズできるアプリなどが増えつつあります。しかし、これは同時にアプリ側からのブランド色を伝えにくくなることを意味しています。もちろん、Material 3を使っても、部品をそのまま利用することは可能です(=カスタマイズは必須ではありません)。

カラーテーマとテキストフォントテーマ

 Material 3では、カラーテーマ(ColorTheme)とテキストテーマ(TextTheme)も変更になります。もちろん、Material 2でも存在していますが、多少カテゴリの追加や変数名の変更が行われています。

 ただし、Flutterでのテキストテーマについては、まだ対応中であり、今後、Material 3への対応がどのような形になるのかははっきり分かりません。

 また、Material 3ではカラーテーマを作成するためのMaterial Theme Builderというツールが用意されています。これらのツールを使えば、カラーテーマの設定がしやすくなるはずです。

図2:Material Theme Builderツールの画面
図2:Material Theme Builderツールの画面

Material 3で変わったコンポーネントスタイル

 Material 3ではコンポーネントについても見た目が多少変わっています。図3は同じコードをMaterial 2と3でカラーテーマをデフォルトのlightテーマとdarkテーマを適用して実行してみたときの実行結果です。

図3:Material Componentの実行結果
図3:Material Componentの実行結果

 Material3にするとスタイルが変わっているコンポーネントがあることがわかると思います。ただし、実際に実行した結果を見ると、思ったよりも大きな変更という感触ではありませんでした。また、デフォルトではトップメニュー以下のタブメニュー(AppBarのbottomプロパティに指定したコンポーネント)が正しく表示されませんでした。このような部分は、今後改善されていくと思いますが、まだ対応中である感じは否めません。

 もちろん、上で挙げたのはデフォルトでのスタイルなので、個別に指定していれば異なる見え方になるはずです。

Material 3への対応方法

 現時点(2022年5月時点)でのFlutter3ではMaterial 3はデフォルトで有効になっていません。そのため、利用にあたっては以下のようにMaterial 3を使うための設定を追加する必要があります。

[リスト3]Material Design3を使うためのコード例
return MaterialApp(
    title: 'Flutter Demo',
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
        //  (1) Material3を使う
        useMaterial3: true,
        colorScheme: ColorScheme.light(),
    ),
    home: const MyHomePage(title: 'Material 3 Demo'),
);

 (1)のようにuseMaterial3の指定を追加します。追加しない場合には、falseを指定した場合と同じになり、Material 2のコンポーネントが使われます。

 また、Material 3を有効にするとこれまでと若干サイズやパディングなども変わるので、場合によっては、ページ全体の配置にも影響があるかもしれません。その場合には、個別に対応しなければならないので、実際の対応は(1)の指定をすれば終了ということにはならないとは思います。

次のページ
Dart2.17での変更点

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

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

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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編 」他、著書多数

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

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15997 2022/06/13 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング