Implementation
factory ThemeConfig.fromJson(Map<String, dynamic> json) {
final cs =
json['colorScheme'] as Map<String, dynamic>? ?? <String, dynamic>{};
return ThemeConfig(
colorScheme: ColorScheme.fromSeed(
seedColor: parseColor(json: cs, key: 'primary', fallback: Colors.blue),
error: parseColor(json: cs, key: 'error', fallback: Colors.red),
errorContainer: parseColor(
json: cs,
key: 'errorContainer',
fallback: Colors.redAccent,
),
onError: parseColor(json: cs, key: 'onError', fallback: Colors.white),
onErrorContainer: parseColor(
json: cs,
key: 'onErrorContainer',
fallback: Colors.red,
),
onPrimary: parseColor(
json: cs,
key: 'onPrimary',
fallback: Colors.white,
),
onPrimaryContainer: parseColor(
json: cs,
key: 'onPrimaryContainer',
fallback: Colors.white,
),
onSecondary: parseColor(
json: cs,
key: 'onSecondary',
fallback: Colors.white,
),
onSecondaryContainer: parseColor(
json: cs,
key: 'onSecondaryContainer',
fallback: Colors.white,
),
onSecondaryFixed: parseColor(
json: cs,
key: 'onSecondaryFixed',
fallback: Colors.black,
),
onSurface: parseColor(
json: cs,
key: 'onSurface',
fallback: Colors.black,
),
onSurfaceVariant: parseColor(
json: cs,
key: 'onSurfaceVariant',
fallback: Colors.grey,
),
onTertiary: parseColor(
json: cs,
key: 'onTertiary',
fallback: Colors.white,
),
onTertiaryContainer: parseColor(
json: cs,
key: 'onTertiaryContainer',
fallback: Colors.white,
),
onTertiaryFixed: parseColor(
json: cs,
key: 'onTertiaryFixed',
fallback: Colors.white,
),
onTertiaryFixedVariant: parseColor(
json: cs,
key: 'onTertiaryFixedVariant',
fallback: Colors.white,
),
outline: parseColor(json: cs, key: 'outline', fallback: Colors.grey),
outlineVariant: parseColor(
json: cs,
key: 'outlineVariant',
fallback: Colors.blueAccent,
),
primary: parseColor(json: cs, key: 'primary', fallback: Colors.blue),
primaryContainer: parseColor(
json: cs,
key: 'primaryContainer',
fallback: Colors.blueAccent,
),
primaryFixed: parseColor(
json: cs,
key: 'primaryFixed',
fallback: Colors.blueGrey,
),
secondary: parseColor(
json: cs,
key: 'secondary',
fallback: Colors.blue,
),
secondaryContainer: parseColor(
json: cs,
key: 'secondaryContainer',
fallback: Colors.blueAccent,
),
secondaryFixed: parseColor(
json: cs,
key: 'secondaryFixed',
fallback: Colors.lightBlue,
),
surface: parseColor(json: cs, key: 'surface', fallback: Colors.white),
surfaceBright: parseColor(
json: cs,
key: 'surfaceBright',
fallback: Colors.white,
),
surfaceContainer: parseColor(
json: cs,
key: 'surfaceContainer',
fallback: Colors.grey,
),
surfaceDim: parseColor(
json: cs,
key: 'surfaceDim',
fallback: Colors.grey.shade300,
),
tertiary: parseColor(
json: cs,
key: 'tertiary',
fallback: Colors.orange,
),
tertiaryContainer: parseColor(
json: cs,
key: 'tertiaryContainer',
fallback: Colors.orangeAccent,
),
tertiaryFixed: parseColor(
json: cs,
key: 'tertiaryFixed',
fallback: Colors.yellow,
),
tertiaryFixedDim: parseColor(
json: cs,
key: 'tertiaryFixedDim',
fallback: Colors.redAccent,
),
),
appAssets: AppAssets(
tenantLogoSquare:
(json['appAssets'] as Map)['tenantLogoSquare'] as String? ?? '',
tenantLogoFull:
(json['appAssets'] as Map)['tenantLogoFull'] as String? ?? '',
tenantLogoMobile:
(json['appAssets'] as Map)['tenantLogoMobile'] as String?,
),
s360fColors: S360fColorsExtension.fromJson(cs),
);
}