Pub Version codecov License

FlexColorScheme

flutter favorite logo

FlexColorScheme 9.x builds matched light and dark ThemeData for Flutter 3.47+, with full support for the SDK-decoupled material_ui and cupertino_ui packages.

Version 9.0 is a major release because Flutter's UI libraries left the SDK. Theming features are otherwise an easy step from 8.4. Breaking API and seed-tone details are in the changelog and at docs.flexcolorscheme.com.

Use it to make Material Design themes with optional surface blends, seed-generated ColorSchemes, and quick component settings. The result is standard ThemeData, with more complete ColorScheme wiring than Flutter's ThemeData.from / colorSchemeSeed factories.

Configure visually in the Themes Playground and copy the API setup into your app.

Dash light Dash dark M3 baseline light M3 baseline dark

FlexColorScheme themes all Flutter SDK UI components from your ColorScheme and custom colors, including legacy ThemeData color properties, in Material 2 or Material 3 mode. Opt in on component themes to adjust shared styles, for example border radius on many widgets with one property.

Verdun green light Verdun green dark Dell genoa light Dell genoa dark

Material 3

Material 3 is the default since FlexColorScheme v8, matching Flutter's ThemeData. Component theme defaults follow Material 3, including per-widget radii from the Material 3 Guide. Keep those defaults, set a shared global radius, or override radius per widget.

Yukon gold light Yukon gold dark Rust light Rust dark

Surface alpha blends and seed-generated ColorSchemes go beyond Flutter's seed factory: multiple seed colors, custom minimum chroma, and custom tone mapping.

Indigo San Marino light Indigo San Marino dark Lipstick pink light Lipstick pink dark

Component themes use simple flat properties. You can skip verbose SDK ShapeBorder and WidgetState theme objects for common cases.

Getting Started

Requires Flutter 3.47 or later. FlexColorScheme depends on material_ui and cupertino_ui; your app still needs a direct material_ui import for MaterialApp and widgets.

Version 9.0 allows any material_ui / cupertino_ui 1.x (^1.0.0). It does not use APIs added after 1.0.0 of those packages. Later FlexColorScheme releases will raise that floor when they adopt new features from them.

flutter pub add flex_color_scheme
import 'package:flex_color_scheme/flex_color_scheme.dart';
import 'package:material_ui/material_ui.dart';

Start with a built-in FlexScheme palette, or define your own colors. The package default example is a heavily commented guide. See Examples and the Tutorial.

FlexColorScheme Counter App

Create a new Flutter project and theme the default counter app with Oh Mandy red (FlexScheme.mandyRed). ThemeMode.system follows the device light/dark setting.

import 'package:flex_color_scheme/flex_color_scheme.dart';
import 'package:material_ui/material_ui.dart';

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      // The Mandy red, light theme.
      theme: FlexThemeData.light(scheme: FlexScheme.mandyRed),
      // The Mandy red, dark theme.
      darkTheme: FlexThemeData.dark(scheme: FlexScheme.mandyRed),
      // Use dark or light theme based on system setting.
      themeMode: ThemeMode.system,
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

This gives a counter application that looks like this:

Counter light Counter dark

FlexColorScheme applied to the standard Flutter counter template

The counter app uses few widgets, so it does not show the theme well. The package examples use placeholder UI only to present results; that demo UI is not part of using FlexColorScheme.

Documentation

Tutorials, API walkthroughs, and Flutter theming guidance: docs.flexcolorscheme.com. Generated API documentation is on pub.dev. The documentation site is powered by docs.page from Invertase.

Themes Playground

The Themes Playground is a web companion that generates FlexColorScheme setup code for the active theme. The app itself, and the demos in its theme simulator, show the result of that code. Settings persist; reset them if you get lost. It is bundled as example 5, the last tutorial step.

Themes Playground Image

In Themes Playground you can visually configure your theme and copy its setup code.

Open the code view beside the controls to watch the API update as you change settings.

Themes Playground Image

Viewing API configuration and its updates as you change settings in Themes Playground.

Latest live build (WASM GC, with JS fallback): playground.flexcolorscheme.com. Usage notes: Playground chapter. Use the same major version of Themes Playground as your flex_color_scheme package, and for versions 7, 8, and 9 prefer matching the minor version too. GitHub Pages JS builds are in the table below.

Happy theming! 💙

Available Themes Playground Versions

Name Version Link
V9.0 WASM+JS V9.0.0 https://playground.flexcolorscheme.com/
V9.0 JS V9.0.0 https://rydmike.com/flexcolorscheme/themesplayground-v9-0
V8.4 V8.4.0 https://rydmike.com/flexcolorscheme/themesplayground-v8-4
V8.2 & V8.3 V8.2.0, V8.3.x https://rydmike.com/flexcolorscheme/themesplayground-v8-3
V8.1 V8.1.1 https://rydmike.com/flexcolorscheme/themesplayground-v8-1
V8.0 V8.0.2 https://rydmike.com/flexcolorscheme/themesplayground-v8-0
V7.3 V7.3.1 https://rydmike.com/flexcolorscheme/themesplayground-v7-3
V7.2 V7.2.0 https://rydmike.com/flexcolorscheme/themesplayground-v7-2
V7.1 V7.1.2 https://rydmike.com/flexcolorscheme/themesplayground-v7-1
V7.0 V7.0.5 https://rydmike.com/flexcolorscheme/themesplayground-v7
V6 V6.1.1 https://rydmike.com/flexcolorscheme/themesplayground-v6
V5 V5.1.0 https://rydmike.com/flexcolorscheme/themesplayground-v5
V4 V4.2.0 https://rydmike.com/flexcolorschemeV4Tut5

NOTE! Older and newer web builds on this domain share browser storage. Loading a newer Playground, then an older one, can fail until you clear site data (Settings → Delete browsing data → Cookies and other site data). You lose saved config. Version 8.0.0 and later uses a different storage name, so it does not conflict with V7 and older.

Themes Playground as a Desktop App

A Windows, macOS, or Linux build of Example 5 is smoother than the web app. For an older package version, download a ZIP from the GitHub releases.

Libraries

flex_color_scheme
A library to help you make beautiful color scheme based themes for Flutter.