Flutter Theme Factory Skill
This skill provides a curated collection of professional Flutter ThemeData configurations, each with carefully selected color palettes, Google Fonts pairings, and component-level theming. Once a theme is chosen, it generates production-ready Dart code.
Purpose
To apply consistent, professional styling to any Flutter application. Each theme includes:
- A cohesive
ColorScheme with light and dark variants
- Complementary Google Fonts pairings for display, headline, title, body, and label text
- Component-level theming (
AppBarTheme, CardTheme, ElevatedButtonTheme, InputDecorationTheme, etc.)
- A distinct visual identity suitable for different contexts and audiences
Usage Instructions
- Show available themes: Present the theme list below with descriptions
- Ask for their choice: Ask which theme to apply
- Wait for selection: Get explicit confirmation about the chosen theme
- Generate the theme: Read the selected theme file from
themes/ and generate complete Dart code
- Deliver files: Provide
app_theme.dart, app_colors.dart, app_typography.dart ready to drop into their project
Themes Available
| # |
Theme |
Vibe |
Best For |
| 1 |
Ocean Depths |
Professional & calming maritime |
Finance, consulting, corporate |
| 2 |
Sunset Boulevard |
Warm & vibrant energy |
Social, lifestyle, food delivery |
| 3 |
Forest Canopy |
Natural & grounded earth tones |
Wellness, sustainability, outdoor |
| 4 |
Modern Minimalist |
Clean & contemporary grayscale |
Productivity, SaaS, developer tools |
| 5 |
Golden Hour |
Rich & warm autumnal |
Photography, luxury, premium |
| 6 |
Arctic Frost |
Cool & crisp winter-inspired |
Healthcare, fintech, analytics |
| 7 |
Desert Rose |
Soft & sophisticated dusty tones |
Fashion, beauty, lifestyle |
| 8 |
Tech Innovation |
Bold & modern tech aesthetic |
Startups, AI/ML, developer |
| 9 |
Botanical Garden |
Fresh & organic garden colors |
Health, organic food, plants |
| 10 |
Midnight Galaxy |
Dramatic & cosmic deep tones |
Gaming, entertainment, music |
| 11 |
Neon Tokyo |
Cyberpunk, high contrast neon |
Gaming, nightlife, tech |
| 12 |
Terracotta Studio |
Warm clay, artisan craft |
Art, handmade, interior design |
Generated Code Structure
Each theme generates:
lib/core/theme/
├── app_theme.dart # ThemeData for light & dark mode
├── app_colors.dart # Color constants & ColorScheme
├── app_typography.dart # Google Fonts TextTheme
└── app_spacing.dart # Consistent spacing scale
app_theme.dart Pattern
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'app_colors.dart';
import 'app_typography.dart';
class AppTheme {
static ThemeData get light => ThemeData(
useMaterial3: true,
brightness: Brightness.light,
colorScheme: AppColors.lightScheme,
textTheme: AppTypography.textTheme,
appBarTheme: AppBarTheme(...),
cardTheme: CardTheme(...),
elevatedButtonTheme: ElevatedButtonThemeData(...),
inputDecorationTheme: InputDecorationTheme(...),
bottomNavigationBarTheme: BottomNavigationBarThemeData(...),
floatingActionButtonTheme: FloatingActionButtonThemeData(...),
chipTheme: ChipThemeData(...),
dividerTheme: DividerThemeData(...),
// ... all component themes
);
static ThemeData get dark => ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorScheme: AppColors.darkScheme,
textTheme: AppTypography.textTheme,
// ... dark variants
);
}
app_colors.dart Pattern
import 'package:flutter/material.dart';
class AppColors {
// Brand colors
static const Color primary = Color(0xFF...);
static const Color secondary = Color(0xFF...);
static const Color accent = Color(0xFF...);
static const Color surface = Color(0xFF...);
// Semantic colors
static const Color success = Color(0xFF...);
static const Color warning = Color(0xFF...);
static const Color error = Color(0xFF...);
static const Color info = Color(0xFF...);
// Gradients
static const LinearGradient primaryGradient = LinearGradient(...);
static const LinearGradient backgroundGradient = LinearGradient(...);
// Light scheme
static const ColorScheme lightScheme = ColorScheme(
brightness: Brightness.light,
primary: ...,
onPrimary: ...,
secondary: ...,
onSecondary: ...,
surface: ...,
onSurface: ...,
error: ...,
onError: ...,
// ... all 30+ ColorScheme properties
);
// Dark scheme
static const ColorScheme darkScheme = ColorScheme(
brightness: Brightness.dark,
// ... dark variants
);
}
app_typography.dart Pattern
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class AppTypography {
static String get _displayFont => GoogleFonts.playfairDisplay().fontFamily!;
static String get _bodyFont => GoogleFonts.sourceSansPro().fontFamily!;
static TextTheme get textTheme => TextTheme(
displayLarge: TextStyle(fontFamily: _displayFont, fontSize: 57, fontWeight: FontWeight.w700),
displayMedium: TextStyle(fontFamily: _displayFont, fontSize: 45, fontWeight: FontWeight.w600),
displaySmall: TextStyle(fontFamily: _displayFont, fontSize: 36, fontWeight: FontWeight.w600),
headlineLarge: TextStyle(fontFamily: _displayFont, fontSize: 32, fontWeight: FontWeight.w600),
headlineMedium: TextStyle(fontFamily: _displayFont, fontSize: 28, fontWeight: FontWeight.w500),
headlineSmall: TextStyle(fontFamily: _displayFont, fontSize: 24, fontWeight: FontWeight.w500),
titleLarge: TextStyle(fontFamily: _bodyFont, fontSize: 22, fontWeight: FontWeight.w600),
titleMedium: TextStyle(fontFamily: _bodyFont, fontSize: 16, fontWeight: FontWeight.w600),
titleSmall: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w500),
bodyLarge: TextStyle(fontFamily: _bodyFont, fontSize: 16, fontWeight: FontWeight.w400),
bodyMedium: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w400),
bodySmall: TextStyle(fontFamily: _bodyFont, fontSize: 12, fontWeight: FontWeight.w400),
labelLarge: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w600),
labelMedium: TextStyle(fontFamily: _bodyFont, fontSize: 12, fontWeight: FontWeight.w500),
labelSmall: TextStyle(fontFamily: _bodyFont, fontSize: 11, fontWeight: FontWeight.w500),
);
}
Application Process
After a preferred theme is selected:
- Read the corresponding theme file from the
themes/ directory
- Generate complete
app_theme.dart, app_colors.dart, app_typography.dart, app_spacing.dart
- Include
pubspec.yaml dependency additions (google_fonts, etc.)
- Provide usage example in
main.dart:
MaterialApp(
theme: AppTheme.light,
darkTheme: AppTheme.dark,
themeMode: ThemeMode.system,
...
)
- Ensure WCAG AA contrast ratios in both light and dark mode
- Test all Material component themes are properly configured
Create Your Own Theme
For cases where none of the existing themes work:
- Ask the user for: brand colors (if any), mood/vibe, target audience, app category
- Generate a custom theme following the same structure as preset themes
- Give it a descriptive name
- Show a preview widget that demonstrates the theme across key components
- Apply the theme after user approval
Preview Widget
When showing a theme preview, generate a ThemePreview widget that displays:
- Color palette swatches
- Typography samples (all text styles)
- Button variants (elevated, filled, outlined, text)
- Card with content
- TextField / Input
- BottomNavigationBar sample
- Chip variants
- Light vs Dark side-by-side comparison
1---2name: flutter-theme-factory3description: Toolkit for styling Flutter apps with a theme. Apply pre-built or custom ThemeData configurations to any Flutter app — including full ColorScheme, TextTheme, component themes, and dark/light mode support. 12 pre-set themes available, or generate a custom theme on-the-fly.4license: MIT5---67# Flutter Theme Factory Skill89This skill provides a curated collection of professional Flutter `ThemeData` configurations, each with carefully selected color palettes, Google Fonts pairings, and component-level theming. Once a theme is chosen, it generates production-ready Dart code.1011## Purpose1213To apply consistent, professional styling to any Flutter application. Each theme includes:14- A cohesive `ColorScheme` with light and dark variants15- Complementary Google Fonts pairings for display, headline, title, body, and label text16- Component-level theming (`AppBarTheme`, `CardTheme`, `ElevatedButtonTheme`, `InputDecorationTheme`, etc.)17- A distinct visual identity suitable for different contexts and audiences1819## Usage Instructions20211. **Show available themes**: Present the theme list below with descriptions222. **Ask for their choice**: Ask which theme to apply233. **Wait for selection**: Get explicit confirmation about the chosen theme244. **Generate the theme**: Read the selected theme file from `themes/` and generate complete Dart code255. **Deliver files**: Provide `app_theme.dart`, `app_colors.dart`, `app_typography.dart` ready to drop into their project2627## Themes Available2829| # | Theme | Vibe | Best For |30|---|-------|------|----------|31| 1 | **Ocean Depths** | Professional & calming maritime | Finance, consulting, corporate |32| 2 | **Sunset Boulevard** | Warm & vibrant energy | Social, lifestyle, food delivery |33| 3 | **Forest Canopy** | Natural & grounded earth tones | Wellness, sustainability, outdoor |34| 4 | **Modern Minimalist** | Clean & contemporary grayscale | Productivity, SaaS, developer tools |35| 5 | **Golden Hour** | Rich & warm autumnal | Photography, luxury, premium |36| 6 | **Arctic Frost** | Cool & crisp winter-inspired | Healthcare, fintech, analytics |37| 7 | **Desert Rose** | Soft & sophisticated dusty tones | Fashion, beauty, lifestyle |38| 8 | **Tech Innovation** | Bold & modern tech aesthetic | Startups, AI/ML, developer |39| 9 | **Botanical Garden** | Fresh & organic garden colors | Health, organic food, plants |40| 10 | **Midnight Galaxy** | Dramatic & cosmic deep tones | Gaming, entertainment, music |41| 11 | **Neon Tokyo** | Cyberpunk, high contrast neon | Gaming, nightlife, tech |42| 12 | **Terracotta Studio** | Warm clay, artisan craft | Art, handmade, interior design |4344## Generated Code Structure4546Each theme generates:4748```49lib/core/theme/50├── app_theme.dart # ThemeData for light & dark mode51├── app_colors.dart # Color constants & ColorScheme52├── app_typography.dart # Google Fonts TextTheme53└── app_spacing.dart # Consistent spacing scale54```5556### app_theme.dart Pattern57```dart58import 'package:flutter/material.dart';59import 'package:google_fonts/google_fonts.dart';60import 'app_colors.dart';61import 'app_typography.dart';6263class AppTheme {64 static ThemeData get light => ThemeData(65 useMaterial3: true,66 brightness: Brightness.light,67 colorScheme: AppColors.lightScheme,68 textTheme: AppTypography.textTheme,69 appBarTheme: AppBarTheme(...),70 cardTheme: CardTheme(...),71 elevatedButtonTheme: ElevatedButtonThemeData(...),72 inputDecorationTheme: InputDecorationTheme(...),73 bottomNavigationBarTheme: BottomNavigationBarThemeData(...),74 floatingActionButtonTheme: FloatingActionButtonThemeData(...),75 chipTheme: ChipThemeData(...),76 dividerTheme: DividerThemeData(...),77 // ... all component themes78 );7980 static ThemeData get dark => ThemeData(81 useMaterial3: true,82 brightness: Brightness.dark,83 colorScheme: AppColors.darkScheme,84 textTheme: AppTypography.textTheme,85 // ... dark variants86 );87}88```8990### app_colors.dart Pattern91```dart92import 'package:flutter/material.dart';9394class AppColors {95 // Brand colors96 static const Color primary = Color(0xFF...);97 static const Color secondary = Color(0xFF...);98 static const Color accent = Color(0xFF...);99 static const Color surface = Color(0xFF...);100101 // Semantic colors102 static const Color success = Color(0xFF...);103 static const Color warning = Color(0xFF...);104 static const Color error = Color(0xFF...);105 static const Color info = Color(0xFF...);106107 // Gradients108 static const LinearGradient primaryGradient = LinearGradient(...);109 static const LinearGradient backgroundGradient = LinearGradient(...);110111 // Light scheme112 static const ColorScheme lightScheme = ColorScheme(113 brightness: Brightness.light,114 primary: ...,115 onPrimary: ...,116 secondary: ...,117 onSecondary: ...,118 surface: ...,119 onSurface: ...,120 error: ...,121 onError: ...,122 // ... all 30+ ColorScheme properties123 );124125 // Dark scheme126 static const ColorScheme darkScheme = ColorScheme(127 brightness: Brightness.dark,128 // ... dark variants129 );130}131```132133### app_typography.dart Pattern134```dart135import 'package:flutter/material.dart';136import 'package:google_fonts/google_fonts.dart';137138class AppTypography {139 static String get _displayFont => GoogleFonts.playfairDisplay().fontFamily!;140 static String get _bodyFont => GoogleFonts.sourceSansPro().fontFamily!;141142 static TextTheme get textTheme => TextTheme(143 displayLarge: TextStyle(fontFamily: _displayFont, fontSize: 57, fontWeight: FontWeight.w700),144 displayMedium: TextStyle(fontFamily: _displayFont, fontSize: 45, fontWeight: FontWeight.w600),145 displaySmall: TextStyle(fontFamily: _displayFont, fontSize: 36, fontWeight: FontWeight.w600),146 headlineLarge: TextStyle(fontFamily: _displayFont, fontSize: 32, fontWeight: FontWeight.w600),147 headlineMedium: TextStyle(fontFamily: _displayFont, fontSize: 28, fontWeight: FontWeight.w500),148 headlineSmall: TextStyle(fontFamily: _displayFont, fontSize: 24, fontWeight: FontWeight.w500),149 titleLarge: TextStyle(fontFamily: _bodyFont, fontSize: 22, fontWeight: FontWeight.w600),150 titleMedium: TextStyle(fontFamily: _bodyFont, fontSize: 16, fontWeight: FontWeight.w600),151 titleSmall: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w500),152 bodyLarge: TextStyle(fontFamily: _bodyFont, fontSize: 16, fontWeight: FontWeight.w400),153 bodyMedium: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w400),154 bodySmall: TextStyle(fontFamily: _bodyFont, fontSize: 12, fontWeight: FontWeight.w400),155 labelLarge: TextStyle(fontFamily: _bodyFont, fontSize: 14, fontWeight: FontWeight.w600),156 labelMedium: TextStyle(fontFamily: _bodyFont, fontSize: 12, fontWeight: FontWeight.w500),157 labelSmall: TextStyle(fontFamily: _bodyFont, fontSize: 11, fontWeight: FontWeight.w500),158 );159}160```161162## Application Process163164After a preferred theme is selected:1651. Read the corresponding theme file from the `themes/` directory1662. Generate complete `app_theme.dart`, `app_colors.dart`, `app_typography.dart`, `app_spacing.dart`1673. Include `pubspec.yaml` dependency additions (`google_fonts`, etc.)1684. Provide usage example in `main.dart`:169```dart170MaterialApp(171 theme: AppTheme.light,172 darkTheme: AppTheme.dark,173 themeMode: ThemeMode.system,174 ...175)176```1775. Ensure WCAG AA contrast ratios in both light and dark mode1786. Test all Material component themes are properly configured179180## Create Your Own Theme181182For cases where none of the existing themes work:1831. Ask the user for: brand colors (if any), mood/vibe, target audience, app category1842. Generate a custom theme following the same structure as preset themes1853. Give it a descriptive name1864. Show a preview widget that demonstrates the theme across key components1875. Apply the theme after user approval188189### Preview Widget190When showing a theme preview, generate a `ThemePreview` widget that displays:191- Color palette swatches192- Typography samples (all text styles)193- Button variants (elevated, filled, outlined, text)194- Card with content195- TextField / Input196- BottomNavigationBar sample197- Chip variants198- Light vs Dark side-by-side comparison