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:
- the widget string,
- the gradient style and
- the flutter gradient object.
This leads to specifying the gradient direction separately from the gradient object when selecting rebuild triggers for the PreviewSection. See #80 (comment).
LinearStyleGradient
|
@override |
|
bool operator ==(Object other) => |
|
identical(this, other) || |
|
other is LinearStyleGradient && |
|
runtimeType == other.runtimeType && |
|
toWidgetString() == other.toWidgetString() && |
|
getGradientStyle() == other.getGradientStyle() && |
|
toFlutterGradient() == other.toFlutterGradient(); |
|
|
|
@override |
|
int get hashCode => hash3(toWidgetString().hashCode, |
|
getGradientStyle().hashCode, toFlutterGradient().hashCode); |
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:
|
@override |
|
bool operator ==(Object other) => |
|
identical(this, other) || |
|
other is LinearStyleGradient && |
|
runtimeType == other.runtimeType && |
|
toWidgetString() == other.toWidgetString() && |
|
getGradientStyle() == other.getGradientStyle() && |
|
toFlutterGradient() == other.toFlutterGradient(); |
|
|
|
@override |
|
int get hashCode => hash3(toWidgetString().hashCode, |
|
getGradientStyle().hashCode, toFlutterGradient().hashCode); |
RadialStyleGradient:
|
@override |
|
bool operator ==(Object other) => |
|
identical(this, other) || |
|
other is RadialStyleGradient && |
|
runtimeType == other.runtimeType && |
|
toWidgetString() == other.toWidgetString() && |
|
getGradientStyle() == other.getGradientStyle() && |
|
toFlutterGradient() == other.toFlutterGradient(); |
|
|
|
@override |
|
int get hashCode => hash3(toWidgetString().hashCode, |
|
getGradientStyle().hashCode, toFlutterGradient().hashCode); |
SweepStyleGradient:
|
@override |
|
bool operator ==(Object other) => |
|
identical(this, other) || |
|
other is SweepStyleGradient && |
|
runtimeType == other.runtimeType && |
|
toWidgetString() == other.toWidgetString() && |
|
getGradientStyle() == other.getGradientStyle() && |
|
toFlutterGradient() == other.toFlutterGradient(); |
|
|
|
@override |
|
int get hashCode => hash3(toWidgetString().hashCode, |
|
getGradientStyle().hashCode, toFlutterGradient().hashCode); |
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
GradientDirectionis not considered part of theAbstractGradient's identity check.The only properties checked are:
This leads to specifying the gradient direction separately from the gradient object when selecting rebuild triggers for the
PreviewSection. See #80 (comment).LinearStyleGradient
flutter_gradient_generator/lib/models/linear_style_gradient.dart
Lines 83 to 94 in f725587
2. Reuse Identity Check Logic
The logic for the identity check is duplicated across
LinearStyleGradient,RadialStyleGradient, andSweepStyleGradient.The logic can be centralized in the
AbstractGradientclass.This will improve maintainability, especially as other gradient styles will be introduced.
LinearStyleGradient:
flutter_gradient_generator/lib/models/linear_style_gradient.dart
Lines 83 to 94 in f725587
RadialStyleGradient:
flutter_gradient_generator/lib/models/radial_style_gradient.dart
Lines 67 to 78 in f725587
SweepStyleGradient:
flutter_gradient_generator/lib/models/sweep_style_gradient.dart
Lines 69 to 80 in f725587