12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Flutter】primarySwatchの色を動的に変更する方法

Posted at

0、概要

FlutterアプリのメインカラーはprimarySwatchによって設定されます。
これの変更がプリセットから外れてカラーコードでオリジナル設定しようとすると大変だったので、
記事にしました。

1、失敗例

その前にやってみてダメだった失敗例を記述します。

main.dart
// 大元のコードをpinkとかにする これはOK
primarySwatch: Colors.pink

// pinkが濃かったので[100]などのように薄めてみた NG
primarySwatch: Colors.pink[100]

// カラーで指定できるのではないかと思い NG
primarySwatch: Colors(0xFFFDFDFD)
=>color is not a subtype of material color

ColorsとMaterial Colorは別物であり、
primemarySwatchにはMaterial Colorを適用しなければならない。とのこと。

2、完成したコード

先に完成形を載せておきます。

main.dart
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  static Map<int, Color> color = {
      50: Color(0xFFFFFBFD),
      100: Color(0xFFFFF4F9),
      200: Color(0xFFFFEDF6),
      300: Color(0xFFFFE5F2),
      400: Color(0xFFFFE0EF),
      500: Color(0xFFFFDAEC),
      600: Color(0xFFFFD6eA),
      700: Color(0xFFFFD0E7),
      800: Color(0xFFFFCBE4),
      900: Color(0xFFFFC2DF),
    };

  final MaterialColor primeColor = MaterialColor(0xFFFFDAEC, color);
  @override
  Widget build(BuildContext context) {
  //  省略   //
  //
  //
    primarySwatch: primeColor,

3、解説

方針: MaterialColorを定義する必要があります。
そのためには、変数で参照されるメインとなる色(500)と10色からなる色定義リストを作成する必要があります。
10色からなる色定義リストはここでは使用しませんが、内部的に参照している箇所があるため、作成して渡さないといけません。

3-1 カラーコードの作成

下記サイトで作成することが可能です。
MATERIAL DESIGN PALETTE GENERATOR
http://mcg.mbitson.com/#!?mcgpalette0=%23ffdaec

アクセスしたら、右上のパレットを押して、完了したらchooseを押します
スクリーンショット 2020-12-19 18.08.37.png

chooseを押したら、左のクリップボードのようなアイコンを押し、
スクリーンショット 2020-12-19 18.40.11.png

カラーコードが表示されるので50~900までをコピーします。

3-2、コードにする。

コードにする際に気をつけなければならないのが、
カラーコードの先頭に必ず0xFF(16進数表記の明示)を入れることです。

カラーコードが'FFEDF6'の場合は、
0xFF+FFEDF6でこのような感じになります。

200: Color(0xFFFFEDF6),

また、MaterialColorの第一引数にも入れ忘れないようにしましょう

final MaterialColor primeColor = MaterialColor(0xFFFFDAEC, color);

最後に

これで色を動的に変更することが可能です。
同じように困った人の助けになれば幸いです。
最後まで読んでいただき、ありがとうございました。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?