Files
archery-bookkeeper/lib/config/constants/_constants.md
T
Mikkeli Matlock d3a8a5c6da Implement centralized color scheme system with Sum of 6 greying
- Add ScoringColorScheme class with explicit text colors per scheme
- Implement traditional (vibrant) and lowSaturation (muted) color schemes
- Add disabled state colors for greying out inactive elements
- Refactor scoring_cell.dart and scoring_keypad.dart to use centralized colors
- Grey out Sum of 6 column when in 3-arrow end mode while maintaining layout
- Add comprehensive color scheme documentation and usage examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 01:07:04 +09:00

1.9 KiB

Constants Directory

This directory contains application-wide constants and configuration.

Files

  • scoring_colors.dart: Centralized color scheme system for all scoring-related UI components
    • Provides multiple color schemes: traditional (vibrant) and lowSaturation (muted)
    • Follows archery ring color conventions (gold, red, blue, black, white)
    • Explicit text colors defined per scheme for intentional design control
    • Disabled state colors for greying out inactive UI elements
    • Single source of truth for all score-related colors with easy scheme switching
    • Architecture ready for dark themes, high contrast, and colorblind-friendly schemes

Future Expansion

Planned constants files:

  • app_constants.dart: General app configuration (timeouts, limits, defaults)
  • layout_constants.dart: UI spacing, sizing, and layout specifications
  • scoring_rules.dart: Archery scoring rules and validation constants
  • export_constants.dart: File formats, templates, and export configurations

Usage

import 'package:archery_bookkeeper/config/constants/scoring_colors.dart';

// Get background color for any score (uses current active scheme)
Color bgColor = ScoringColors.getScoreBackgroundColor('X');

// Get appropriate text color with automatic contrast calculation
Color textColor = ScoringColors.getScoreTextColor('X');

// Check if score should be bold
bool isBold = ScoringColors.shouldUseBoldText('10');

// Access available schemes
ScoringColorScheme traditional = ScoringColors.availableTraditional;
ScoringColorScheme lowSat = ScoringColors.availableLowSaturation;

// Get disabled state colors
Color disabledBg = ScoringColors.getDisabledBackground();
Color disabledText = ScoringColors.getDisabledText();
Color disabledBorder = ScoringColors.getDisabledBorder();

// Switch schemes by changing _currentScheme in scoring_colors.dart:
// static const ScoringColorScheme _currentScheme = lowSaturation;