retrieveGradient function
Gradient?
retrieveGradient(
- PaintModel paint
)
Implementation
Gradient? retrieveGradient(PaintModel paint) {
try {
final double rotation =
decomposeRelativeTransform(paint.gradientTransform).rotation;
// We sort the colors to mimic the way Figma changes the order.
final gradientStops = paint.gradientStops!
.sorted((g1, g2) => g1.position.compareTo(g2.position));
final radians = rotation * pi / 180;
if (paint.type == PaintType.gradientLinear) {
return LinearGradient(
colors: gradientStops
.map((e) => e.color.multiplyAlpha(paint.opacity).toFlutterColor())
.toList(),
stops: gradientStops.map((e) => e.position).toList(),
transform: GradientRotation(radians),
);
} else if (paint.type == PaintType.gradientRadial) {
return RadialGradient(
colors: gradientStops
.map((e) => e.color.multiplyAlpha(paint.opacity).toFlutterColor())
.toList(),
stops: gradientStops.map((e) => e.position).toList(),
transform: GradientRotation(radians),
);
} else if (paint.type == PaintType.gradientAngular) {
return SweepGradient(
colors: gradientStops
.map((e) => e.color.multiplyAlpha(paint.opacity).toFlutterColor())
.toList(),
stops: gradientStops.map((e) => e.position).toList(),
transform: GradientRotation(radians),
);
}
return null;
} catch (error, stacktrace) {
print(error);
print(stacktrace);
return null;
}
}