ponshu-room-lite/lib/theme/theme_utils.dart

64 lines
2.3 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'app_colors.dart';
/// ThemeUtils - テーマカラーへの安全なアクセスを提供するユーティリティ
///
/// 使用例:
/// ```dart
/// // Extension経由推奨:
/// Text('テキスト', style: TextStyle(color: context.colors.textPrimary));
/// Icon(icon, color: context.colors.brandPrimary);
///
/// // 短縮形:
/// color: context.brandPrimary
/// color: context.textSecondary
/// ```
extension ThemeContextExtensions on BuildContext {
/// AppColorsへの安全なアクセス
AppColors get colors => Theme.of(this).extension<AppColors>()!;
// ===== 便利なショートカット =====
// テキストカラー
Color get textPrimary => colors.textPrimary;
Color get textSecondary => colors.textSecondary;
Color get textTertiary => colors.textTertiary;
// ブランドカラー
Color get brandPrimary => colors.brandPrimary;
Color get brandAccent => colors.brandAccent;
Color get brandSurface => colors.brandSurface;
// アイコンカラー
Color get iconDefault => colors.iconDefault;
Color get iconSubtle => colors.iconSubtle;
Color get iconAccent => colors.iconAccent;
// サーフェイスカラー
Color get surfaceElevated => colors.surfaceElevated;
Color get surfaceSubtle => colors.surfaceSubtle;
Color get dividerColor => colors.divider;
// セマンティックカラー
Color get successColor => colors.success;
Color get warningColor => colors.warning;
Color get errorColor => colors.error;
Color get infoColor => colors.info;
// ===== ダークモードチェック(既存コードとの互換性用) =====
/// ダークモードかどうかを判定
/// 注意: 新規コードでは使用しないでください。代わりにAppColorsのセマンティックカラーを使用してください。
@Deprecated('Use context.colors.brandPrimary instead of checking isDark manually')
bool get isDark => Theme.of(this).brightness == Brightness.dark;
}
/// グローバルヘルパー関数(既存コードとの互換性用)
///
/// 注意: 新規コードでは使用しないでください。
/// 代わりに `context.colors.brandPrimary` などのExtensionを使用してください。
@Deprecated('Use context.colors instead')
AppColors appColors(BuildContext context) {
return Theme.of(context).extension<AppColors>()!;
}