appColorTemplate function

String appColorTemplate()

Implementation

String appColorTemplate() => '''
${ProjectUtils.fileGenerationString}

import 'package:flutter/material.dart';

extension AppThemeContext on BuildContext {
  AppColors get appColors => AppColors(this);
}

class AppColors {
  final BuildContext context;

  const AppColors(this.context);

  ThemeData get _theme => Theme.of(context);

  ColorScheme get _scheme => _theme.colorScheme;

  TextTheme get _text => _theme.textTheme;

  bool get _isDark => _theme.brightness == Brightness.dark;

  // ---------------- BRAND ----------------
  Color get primary => _scheme.primary;

  Color get secondary => _scheme.secondary;

  // ---------------- CONTAINERS ----------------
  Color get primaryContainer => _scheme.primaryContainer;

  Color get secondaryContainer => _scheme.secondaryContainer;

  Color get errorContainer => _scheme.errorContainer;

  // ---------------- SURFACES ----------------
  Color get surface => _scheme.surface;

  Color get background => _theme.scaffoldBackgroundColor;

  // ---------------- TEXT ----------------
  Color get textPrimary => _text.bodyMedium?.color ?? (_isDark ? Colors.white : Colors.black);

  Color get textSecondary => _text.bodySmall?.color?.withValues(alpha: 0.7) ?? (_isDark ? Colors.white70 : Colors.black54);

  Color get textDisabled => _theme.disabledColor;

  Color get textInverse => _scheme.onPrimary;

  // ---------------- INPUT / UI ----------------
  Color get hintColor => _theme.hintColor;

  Color get dividerColor => _theme.dividerColor;

  Color get border => _scheme.outline;

  // ---------------- STATUS ----------------
  Color get error => _scheme.error;

  Color get success => _isDark ? const Color(0xFF27AE60) : const Color(0xFF2ECC71);

  Color get warning => _isDark ? const Color(0xFFFFB300) : const Color(0xFFFFC107);

  Color get info => _isDark ? const Color(0xFF2980B9) : const Color(0xFF3498DB);

  Color get successContainer => _isDark ? const Color(0xFF1E3A2B) : const Color(0xFFDFF5EA);

  Color get warningContainer => _isDark ? const Color(0xFF4A3B1A) : const Color(0xFFFFF3CD);

  Color get infoContainer => _isDark ? const Color(0xFF1E3A4D) : const Color(0xFFE3F2FD);

  // ---------------- BUTTONS ----------------
  Color get buttonDisable => _isDark ? const Color(0xFF5A5E9E) : const Color(0xFFCBCCEF);

  Color get buttonPressed => _isDark ? const Color(0xFF3E46C8) : const Color(0xFF4C56E0);

  // ---------------- MISC ----------------
  Color get overlay => _isDark ? const Color(0x80000000) : const Color(0x33000000);

  Color get transparent => Colors.transparent;

  Color get shimmerBase => _isDark ? Colors.grey.shade800 : Colors.grey.shade300;

  Color get shimmerHighlight => _isDark ? Colors.grey.shade700 : Colors.grey.shade100;

  Color get white => Colors.white;

  Color get black => Colors.black;

  /// Context-aware foreground/background swap
  Color get whiteBlack => _isDark ? Colors.white : Colors.black;
}
''';