Flutter Design System Enforcement
Priority: P0 (CRITICAL)
Zero tolerance for hardcoded design values.
Phase 0: Context Discovery (MANDATORY)
Before UI refactoring, identify project's Theme Archetype:
- Check
main.dart: Look forMaterialApptheme configuration. - Determine Pattern:
- Theme-Driven (Adaptive):
VThemeData(...).toThemeData()or extensiveThemeDataoverrides → useTheme.of(context).textTheme/theme.textTheme. - Token-Driven (Static): Use static tokens (
VTypography.*) only when no global theme bridge exists, or when defining theme itself.
Guidelines
- Colors: Use tokens (
VColors.*,AppColors.*), neverColor(0xFF...)orColors.red. - Spacing: Use tokens (
VSpacing.*), never magic numbers like16or24. - Typography: Prioritize
theme.textTheme.*for adaptive UI. UseVTypography.*tokens only for theme definitions or non-contextual logic. Never use inlineTextStyle. - Borders: Use tokens (
VBorders.*), never rawBorderRadius. - Components: Use DLS widgets (
VButton) over raw Material widgets (ElevatedButton) if available.
Anti-Patterns
- No Hex Colors:
Color(0xFF...)strictly forbidden. - No Color Enums:
Colors.blueforbidden in UI code. - No Magic Spacing:
SizedBox(height: 10)forbidden. - No Inline Styles:
TextStyle(fontSize: 14)forbidden. - No Raw Widgets: Don't use
ElevatedButtonwhenVButtonexists.
Related Topics
mobile-ux-core | flutter/widgets | idiomatic-flutter