Skip to main content
Cinemapedia uses a single AppTheme class to define its visual style. The theme is created with Flutter’s Material 3 design system and a custom seed color that drives the entire color scheme.

AppTheme class

lib/config/theme/app_theme.dart

getTheme()

getTheme() returns a ThemeData instance configured with two key options:

How the theme is applied

The AppTheme instance is created in MainApp.build() and passed directly to MaterialApp.router:
lib/main.dart
Because a new AppTheme() is instantiated on every build, the theme is stateless — there is no mutable theme state to manage.

Seed color

Material 3 derives an entire harmonious color scheme (primary, secondary, tertiary, surface, error, and their variants) from a single colorSchemeSeed. The current seed is:
Flutter generates all tonal palette roles automatically from this value, so changing the seed updates every color in the app consistently.

Customizing the color scheme

To change the app’s color palette, replace the hex value passed to colorSchemeSeed:
lib/config/theme/app_theme.dart
You can preview the generated color scheme before committing to a seed color using the Material Theme Builder. Enter your hex value and inspect all generated roles interactively.

Extending the theme

Add further customisation by passing additional properties to ThemeData:
The AppTheme class currently exposes no constructor parameters. If you need runtime theme switching (e.g. dark mode toggle), add fields to AppTheme, pass them via the constructor, and manage the selected AppTheme instance with a Riverpod provider.