質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

解決済

1回答

2478閲覧

【Flutter】カラーテーマの設定方法

Elmogawa

総合スコア6

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2020/08/14 12:28

編集2020/08/14 12:31

###カラーテーマの設定について
Flutterで簡単なTodoListを作成しているのですが,iOSでダークテーマの際は問題ないのですが,ライトテーマの時に以下の画像のようなUIになり,テキストとアイコンが見えなくなってしまいます.
特に指定した覚えがないのですが,なぜこうなるのかをご回答頂けると幸いです.
よろしくお願いします.

###UI
ライトテーマダークテーマ

###ソースコード

Dart

1//main.dart 2class MyApp extends StatelessWidget { 3 4 5 Widget build(BuildContext context) { 6 return MaterialApp( 7 theme: themeDataLight, 8 darkTheme: themeDataDark, 9 ...(中略) 10 } 11 12 final themeDataLight = ThemeData.light().copyWith( 13 primaryColor: Colors.blue, 14 iconTheme: IconThemeData.fallback().copyWith( 15 color: Colors.blueGrey 16 ), 17 textTheme: TextTheme( 18 button: TextStyle(fontSize: 18, color: Colors.white) 19 ) 20 ); 21 22 final themeDataDark = ThemeData.dark().copyWith( 23 primaryColorDark: Colors.black, 24 iconTheme: IconThemeData.fallback().copyWith( 25 color: Colors.blueGrey, 26 ), 27 textTheme: TextTheme( 28 button: TextStyle(fontSize: 18, color: Colors.white) 29 ) 30 ); 31 32}

Dart

1//Listの文字の部分 2 ListTile( 3 key: Key(key), 4 leading: _defaultIcon, 5 title: Text(tableName), 6 trailing: AppIcon.buildArrowIcon(), 7 onTap: () { 8 MyToDoListPage.push(context, tableName: tableName, index: int.parse(key)); 9 }, 10 ),

Dart

1//BottomNavigationBar 2 3 Widget build(BuildContext context) { 4 //print(widget.key); 5 return Scaffold( 6 ...(中略) 7 bottomNavigationBar: BottomNavigationBar( 8 backgroundColor: Theme.of(context).primaryColor, 9 currentIndex: _page, 10 onTap: onTapBottomNavigation, 11 items: [ 12 _buildBottomNavigationBarItem(Icon(Icons.home), 'TodoList'), 13 _buildBottomNavigationBarItem(Icon(Icons.settings), 'TodoList'), 14 _buildBottomNavigationBarItem(Icon(Icons.money_off), 'Expense') 15 ], 16 ), 17 ); 18 }

###追記
試したこと

  • main.dartのprimaryColorLightが全く反映されてないので,primaryColorに変更

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーの原因

自分もThemeの挙動についてはあまり詳しくないのですが、ThemeData.light()ドキュメントを見ると

This theme does not contain text geometry. Instead, it is expected that this theme is localized using text geometry using ThemeData.localize.

と書かれており、これが関係しているのではないかと思います。

解決策1

解決策としては、以下のようにThemeData()で宣言して、Brightnessを自分で設定する方法があります。

dart

1final themeDataLight = ThemeData( 2 brightness: Brightness.light, 3 primaryColor: Colors.blue, 4 iconTheme: IconThemeData.fallback().copyWith(color: Colors.blueGrey), 5 textTheme: TextTheme( 6 button: TextStyle(fontSize: 18, color: Colors.white), 7 ), 8);

解決策2

もしくは、ThemeData.from()を使うことでも解決できると思います。
ThemeData.from()には、以下のような記述があり、公式はこちらの使用を推奨しているようです。

This is the recommended method to theme your application.

dart

1final themeDataLight = ThemeData.from( 2 colorScheme: ColorScheme.light( 3 primary: Colors.blue, 4 ), 5 textTheme: TextTheme( 6 button: TextStyle(fontSize: 18, color: Colors.white), 7 ), 8).copyWith( 9 iconTheme: IconThemeData.fallback().copyWith(color: Colors.blueGrey), 10);

投稿2020/08/28 06:33

nskhei

総合スコア704

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Elmogawa

2020/08/29 08:24

非常にわかりやすい回答,ありがとうございます. 1度試してみようと思います,
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問