37 lines
1019 B
Dart
37 lines
1019 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
/// Creates two [ThemeData]s (light and dark variants) from a given [seedColor].
|
|
///
|
|
/// This method is needed because once a [ThemeData] is generated, we cannot get
|
|
/// the [ColorScheme] seed to generate another one based on the same seed.
|
|
(ThemeData, ThemeData) createDualThemeData({
|
|
required Color seedColor,
|
|
TextTheme? textTheme,
|
|
bool? useMaterial3,
|
|
ThemeData Function(ThemeData)? transformer,
|
|
}) {
|
|
var lightTheme = ThemeData.from(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: seedColor,
|
|
brightness: Brightness.light,
|
|
),
|
|
textTheme: textTheme,
|
|
useMaterial3: useMaterial3,
|
|
);
|
|
var darkTheme = ThemeData.from(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: seedColor,
|
|
brightness: Brightness.dark,
|
|
),
|
|
textTheme: textTheme,
|
|
useMaterial3: useMaterial3,
|
|
);
|
|
|
|
if (transformer != null) {
|
|
lightTheme = transformer(lightTheme);
|
|
darkTheme = transformer(darkTheme);
|
|
}
|
|
|
|
return (lightTheme, darkTheme);
|
|
}
|