Flutterでカラーテーマーを管理するColorSchemeの設定と、現在のColorSchemeを取得する方法

2024年7月10日水曜日

Flutter

t f B! P L

FlutterでcolorSchemeは、アプリケーションで使用する色を統一しデザイン一貫性を向上させるために使用します。この記事では、colorSchemeを設定する方法と、アプリ内の任意の場所で現在のcolorSchemeを取得する方法について詳しく解説します。

ColorSchemeの設定方法

Flutterでは、ThemeDataを通じてアプリ全体のcolorSchemeを設定することができます。これにより、全体的な色のテーマを一元管理し、UIコンポーネント間で一致した色使いを保証することができます。以下は、基本的なcolorSchemeを設定する方法の例です。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.light(
          primary: Colors.blue,
          secondary: Colors.amber,
          onPrimary: Colors.white,
          onSecondary: Colors.black,
        ),
      ),
      home: MyHomePage(),
    );
  }
}

この例では、primaryとして青色、secondaryとしてアンバー色を指定し、対応するテキスト色としてonPrimaryに白、onSecondaryに黒を使用しています。ColorScheme.light()ColorScheme.dark()は、ライトテーマとダークテーマの設定を簡単に行うためのメソッドです。

現在のコンテキストのColorSchemeを取得する方法

アプリケーションで設定したcolorSchemeをウィジェット内で利用するには、Theme.of(context)を使用して現在のテーマデータにアクセスします。このメソッドにより、設定されたcolorSchemeの値をウィジェットで直接使用することが可能です。

import 'package:flutter/material.dart';

class MyHomePage extends StatelessWidget {
  
  Widget build(BuildContext context) {
    // 現在のColorSchemeを取得
    ColorScheme colorScheme = Theme.of(context).colorScheme;

    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
        backgroundColor: colorScheme.primary,
      ),
      body: Center(
        child: Text(
          'Hello, World!',
          style: TextStyle(color: colorScheme.onPrimary),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        backgroundColor: colorScheme.secondary,
        child: Icon(Icons.add, color: colorScheme.onSecondary),
      ),
    );
  }
}

このコードでは、AppBarの背景色にcolorScheme.primaryを適用し、FloatingActionButtonにはcolorScheme.secondaryを使用しています。それぞれのコンポーネントでonPrimaryおよびonSecondaryを文字色に指定することで、視認性を確保しています。

まとめ

Theme.of(context).colorSchemeを活用することで、Flutterアプリケーション内で簡単に設定された色テーマを取り出し、各ウィジェットに適用することができます。これにより、デザインの一貫性が保たれ、ユーザーにとって魅力的なインターフェースを提供することが可能になります。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ