victoreronmosele / flutter_gradient_generator

An online tool for creating and customizing gradients for use in Flutter applications.
https://fluttergradientgenerator.com
GNU General Public License v3.0
21 stars 5 forks source link

Improve Gradient Model Identity Check #81

Open victoreronmosele opened 6 months ago

victoreronmosele commented 6 months ago

Improvements

The logic for determining an AbstractGradient's identity has some improvements that can be made:

1. Add Gradient Direction To AbstractGradient's Identity Check

The GradientDirection is not considered part of the AbstractGradient's identity check.

The only properties checked are:

  1. the widget string,
  2. the gradient style and
  3. the flutter gradient object.

This leads to specifying the gradient direction separately from the gradient object when selecting rebuild triggers for the PreviewSection. See https://github.com/victoreronmosele/flutter_gradient_generator/pull/80#discussion_r1541928899.

LinearStyleGradient https://github.com/victoreronmosele/flutter_gradient_generator/blob/f72558722027a782a079be0ec346caa969e1dc49/lib/models/linear_style_gradient.dart#L83-L94

2. Reuse Identity Check Logic

The logic for the identity check is duplicated across LinearStyleGradient, RadialStyleGradient, and SweepStyleGradient.

The logic can be centralized in the AbstractGradient class.

This will improve maintainability, especially as other gradient styles will be introduced.

LinearStyleGradient: https://github.com/victoreronmosele/flutter_gradient_generator/blob/f72558722027a782a079be0ec346caa969e1dc49/lib/models/linear_style_gradient.dart#L83-L94
RadialStyleGradient: https://github.com/victoreronmosele/flutter_gradient_generator/blob/f72558722027a782a079be0ec346caa969e1dc49/lib/models/radial_style_gradient.dart#L67-L78
SweepStyleGradient: https://github.com/victoreronmosele/flutter_gradient_generator/blob/f72558722027a782a079be0ec346caa969e1dc49/lib/models/sweep_style_gradient.dart#L69-L80