toFlutterTheme static method

ThemeData toFlutterTheme(
  1. Map<String, dynamic>? uidlTheme, {
  2. String? name,
})

Implementation

static ThemeData toFlutterTheme(Map<String, dynamic>? uidlTheme, {String? name}) {
  if (uidlTheme == null || uidlTheme.isEmpty) {
    return ThemeData();
  }

  final primaryColor = ThemeResolver.parseColor(uidlTheme['primaryColor'] ?? uidlTheme['primary']);
  final secondaryColor = ThemeResolver.parseColor(uidlTheme['secondaryColor'] ?? uidlTheme['secondary']);
  final surfaceColor = ThemeResolver.parseColor(uidlTheme['surfaceColor'] ?? uidlTheme['surface']);
  final errorColor = ThemeResolver.parseColor(uidlTheme['errorColor'] ?? uidlTheme['error']);
  final backgroundColor = ThemeResolver.parseColor(uidlTheme['backgroundColor'] ?? uidlTheme['background']);

  final brightness = uidlTheme['brightness'] == 'dark'
      ? Brightness.dark
      : Brightness.light;

  final colorScheme = ColorScheme(
    brightness: brightness,
    primary: primaryColor ?? (brightness == Brightness.dark ? Colors.blue.shade300 : Colors.blue.shade700),
    onPrimary: Colors.white,
    secondary: secondaryColor ?? (brightness == Brightness.dark ? Colors.teal.shade300 : Colors.teal.shade700),
    onSecondary: Colors.white,
    surface: surfaceColor ?? (brightness == Brightness.dark ? Colors.grey.shade900 : Colors.white),
    onSurface: brightness == Brightness.dark ? Colors.white : Colors.black,
    error: errorColor ?? Colors.red,
    onError: Colors.white,
  );

  final textTheme = _buildTextTheme(uidlTheme['textStyle'], brightness);

  return ThemeData(
    brightness: brightness,
    colorScheme: colorScheme,
    scaffoldBackgroundColor: backgroundColor,
    textTheme: textTheme,
    useMaterial3: true,
  );
}