gradient static method

Gradient? gradient(
  1. Map<String, Object?>? data, {
  2. required Color? evalColor(
    1. Object?
    ),
})

Implementation

static Gradient? gradient(
  Map<String, Object?>? data, {
  required Color? Function(Object?) evalColor,
}) {
  if (data == null) return null;

  final type = as$<String>(data['type']);
  final colorList = as$<List>(data['colorList']) ?? [];
  final colors = colorList
      .map((e) => evalColor(as$<String>(e['color'])) ?? Colors.transparent)
      .nonNulls
      .toList();
  final stops =
      colorList.map((e) => NumUtil.toDouble(e['stop'])).nonNulls.toList();
  if (colors.isEmpty) return null;

  switch (type) {
    case 'linear':
      final begin = To.alignment(data['begin']);
      final end = To.alignment(data['end']);

      return LinearGradient(
        begin: begin ?? Alignment.centerLeft,
        end: end ?? Alignment.centerRight,
        colors: colors,
        stops: stops.length == colors.length ? stops : null,
      );

    case 'angular':
      final center = To.alignment(data['center']);
      final radius = NumUtil.toDouble(data['radius']);

      return RadialGradient(
        radius: radius ?? 0.5,
        center: center ?? Alignment.center,
        colors: colors,
        stops: stops.length == colors.length ? stops : null,
      );

    default:
      return null;
  }
}