Flutter3でMaterial Design 3を試す方法

Material Design 3を試すためには、Flutter3が必要です。
その上でThemeDataに以下を追加します。

return MaterialApp(
  theme: ThemeData(
        // Material3対応 start
    useMaterial3: true,
    colorSchemeSeed: Colors.blue,
    //primarySwatch: CustomTheme.getBaseColor() as MaterialColor,
        // Material3対応 end
  ),

2つほど調整したので備忘録として残します。

Cardに背景色がついてしまう

Material Design 3ではCardは 3種類あるようで、Cardに「elevation>0(0より大きい値)」を指定していると「Elevated」になって薄い背景色がついてしまうようです(①)。

「Outlined」的なデザイン(③)を求めていたので、Cardの引数を以下のようにして「Outlined」にしました。ちなみにshapeを消してcolorだけを指定すると「Filled」(②)になります。

Card(
  // Material3対応 start
  shape: const RoundedRectangleBorder(
    side: BorderSide(
      color: Theme.of(context).colorScheme.outline,
    ),
    borderRadius: BorderRadius.all(Radius.circular(12)),
  ),
  elevation: 0,
  // Material3対応 end

対応前後の結果です。

TabBarが見えなくなる

TabBarのラベルとインジケータが背景と同色の白になったことで見えなくなりました。
MaterialDesign3の紹介ページにTabBarがないので、これから対応、あるいは非対応なのかもしれませんがレイアウト変えるのも面倒なので色を指定して解決しました。

bottom: TabBar(
  // Material3対応 start
  indicatorColor: Colors.blue, // インジケータ色
  labelColor: Colors.blue, // ラベル色(選択時)
  unselectedLabelColor: Colors.black, // ラベル色(非選択時)
  // Material3対応 end
  tabs: tabList(),
),

対応前後の結果です。

ボタンが丸くなったとかヘッダが白になったとか、Material Design 3になっていくつかの変更点はありますが基本的にはシンプルになる方向で悪くない印象です。

デザインも良くなったことだし、折角なのでアプリをバージョンアップしようと思います。

参考記事

FlutterでMaterial Design 3に対応する
Material Design
Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experienc...
Flutter app text turning to white when I set usematerial3: true in MaterialApp
I got excited when I was knowing that Google have introduced Material 3 for flutter apps. This means we can design Flutter Apps with Material 3 design, but when...

コメント

タイトルとURLをコピーしました