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);
 | 
						|
}
 |