ChartTheme.fromJson constructor

ChartTheme.fromJson(
  1. Object? raw
)

Parse from JSON config (e.g., passed alongside chart config).

Implementation

factory ChartTheme.fromJson(Object? raw) {
  final json = JsonValue.map(raw);
  if (json == null) return ChartTheme.light;
  final mode = json['mode']?.toString().toLowerCase();
  if (mode == 'dark') return ChartTheme.dark;
  if (mode == 'highcontrast') return ChartTheme.highContrast;

  Color? bgColor;
  if (json['backgroundColor'] != null) {
    try {
      bgColor = colorCache.resolve(json['backgroundColor']);
    } catch (_) {}
  }

  final rawPalette = JsonValue.list(json['palette']);
  final paletteColors = rawPalette == null
      ? null
      : [
          for (final value in rawPalette)
            if (_isResolvableColor(value?.toString())) value!.toString(),
        ];

  return ChartTheme.light.copyWith(
    backgroundColor: bgColor,
    palette: paletteColors != null && paletteColors.isNotEmpty
        ? ChartPalette(paletteColors)
        : null,
  );
}