parseGradient function
Implementation
Gradient? parseGradient(Map<String, dynamic>? map) {
if (map == null) return null;
List<Color> colors = (map["colors"] as List)
.map((e) => parseColor(e) ?? Colors.white)
.toList();
List<double>? stops =
(map["stops"] as List?)?.map((e) => e.toDouble()).toList().cast<double>();
TileMode tileMode = parseTileMode(map["tileMode"]) ?? TileMode.clamp;
if (map["type"] == "RadialGradient") {
Alignment center = parseAlignment(map["center"]) ?? Alignment.center;
double radius = map["radius"].toDouble();
return RadialGradient(
center: center,
radius: radius,
colors: colors,
stops: stops,
tileMode: tileMode);
} else if (map["type"] == "SweepGradient") {
Alignment center = parseAlignment(map["center"]) ?? Alignment.center;
double startAngle = map["startAngle"].toDouble();
double endAngle = map["endAngle"].toDouble();
return SweepGradient(
center: center,
startAngle: startAngle,
endAngle: endAngle,
colors: colors,
stops: stops,
tileMode: tileMode);
} else {
Alignment begin = parseAlignment(map["begin"]) ?? Alignment.centerLeft;
Alignment end = parseAlignment(map["end"]) ?? Alignment.centerRight;
return LinearGradient(
begin: begin,
end: end,
colors: colors,
stops: stops,
tileMode: tileMode);
}
}