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