Implement InputDecorationTheme copyWith, ==, hashCode (#36411)
* Implement InputDecorationTheme copyWith, ==, hashCode
This commit is contained in:
parent
0f625196cc
commit
db6c362bef
@ -3547,6 +3547,121 @@ class InputDecorationTheme extends Diagnosticable {
|
|||||||
/// behavior of aligning the label with the center of the [TextField].
|
/// behavior of aligning the label with the center of the [TextField].
|
||||||
final bool alignLabelWithHint;
|
final bool alignLabelWithHint;
|
||||||
|
|
||||||
|
/// Creates a copy of this object but with the given fields replaced with the
|
||||||
|
/// new values.
|
||||||
|
InputDecorationTheme copyWith({
|
||||||
|
TextStyle labelStyle,
|
||||||
|
TextStyle helperStyle,
|
||||||
|
TextStyle hintStyle,
|
||||||
|
TextStyle errorStyle,
|
||||||
|
int errorMaxLines,
|
||||||
|
bool hasFloatingPlaceholder,
|
||||||
|
bool isDense,
|
||||||
|
EdgeInsetsGeometry contentPadding,
|
||||||
|
bool isCollapsed,
|
||||||
|
TextStyle prefixStyle,
|
||||||
|
TextStyle suffixStyle,
|
||||||
|
TextStyle counterStyle,
|
||||||
|
bool filled,
|
||||||
|
Color fillColor,
|
||||||
|
Color focusColor,
|
||||||
|
Color hoverColor,
|
||||||
|
InputBorder errorBorder,
|
||||||
|
InputBorder focusedBorder,
|
||||||
|
InputBorder focusedErrorBorder,
|
||||||
|
InputBorder disabledBorder,
|
||||||
|
InputBorder enabledBorder,
|
||||||
|
InputBorder border,
|
||||||
|
bool alignLabelWithHint,
|
||||||
|
}) {
|
||||||
|
return InputDecorationTheme(
|
||||||
|
labelStyle: labelStyle ?? this.labelStyle,
|
||||||
|
helperStyle: helperStyle ?? this.helperStyle,
|
||||||
|
hintStyle: hintStyle ?? this.hintStyle,
|
||||||
|
errorStyle: errorStyle ?? this.errorStyle,
|
||||||
|
errorMaxLines: errorMaxLines ?? this.errorMaxLines,
|
||||||
|
hasFloatingPlaceholder: hasFloatingPlaceholder ?? this.hasFloatingPlaceholder,
|
||||||
|
isDense: isDense ?? this.isDense,
|
||||||
|
contentPadding: contentPadding ?? this.contentPadding,
|
||||||
|
isCollapsed: isCollapsed ?? this.isCollapsed,
|
||||||
|
prefixStyle: prefixStyle ?? this.prefixStyle,
|
||||||
|
suffixStyle: suffixStyle ?? this.suffixStyle,
|
||||||
|
counterStyle: counterStyle ?? this.counterStyle,
|
||||||
|
filled: filled ?? this.filled,
|
||||||
|
fillColor: fillColor ?? this.fillColor,
|
||||||
|
focusColor: focusColor ?? this.focusColor,
|
||||||
|
hoverColor: hoverColor ?? this.hoverColor,
|
||||||
|
errorBorder: errorBorder ?? this.errorBorder,
|
||||||
|
focusedBorder: focusedBorder ?? this.focusedBorder,
|
||||||
|
focusedErrorBorder: focusedErrorBorder ?? this.focusedErrorBorder,
|
||||||
|
disabledBorder: disabledBorder ?? this.disabledBorder,
|
||||||
|
enabledBorder: enabledBorder ?? this.enabledBorder,
|
||||||
|
border: border ?? this.border,
|
||||||
|
alignLabelWithHint: alignLabelWithHint ?? this.alignLabelWithHint,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode {
|
||||||
|
return hashList(<dynamic>[
|
||||||
|
labelStyle,
|
||||||
|
helperStyle,
|
||||||
|
hintStyle,
|
||||||
|
errorStyle,
|
||||||
|
errorMaxLines,
|
||||||
|
hasFloatingPlaceholder,
|
||||||
|
isDense,
|
||||||
|
contentPadding,
|
||||||
|
isCollapsed,
|
||||||
|
prefixStyle,
|
||||||
|
suffixStyle,
|
||||||
|
counterStyle,
|
||||||
|
filled,
|
||||||
|
fillColor,
|
||||||
|
focusColor,
|
||||||
|
hoverColor,
|
||||||
|
errorBorder,
|
||||||
|
focusedBorder,
|
||||||
|
focusedErrorBorder,
|
||||||
|
disabledBorder,
|
||||||
|
enabledBorder,
|
||||||
|
border,
|
||||||
|
alignLabelWithHint,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator==(Object other) {
|
||||||
|
if (identical(this, other))
|
||||||
|
return true;
|
||||||
|
if (other.runtimeType != runtimeType)
|
||||||
|
return false;
|
||||||
|
final InputDecorationTheme typedOther = other;
|
||||||
|
return typedOther.labelStyle == labelStyle
|
||||||
|
&& typedOther.helperStyle == helperStyle
|
||||||
|
&& typedOther.hintStyle == hintStyle
|
||||||
|
&& typedOther.errorStyle == errorStyle
|
||||||
|
&& typedOther.errorMaxLines == errorMaxLines
|
||||||
|
&& typedOther.isDense == isDense
|
||||||
|
&& typedOther.contentPadding == contentPadding
|
||||||
|
&& typedOther.isCollapsed == isCollapsed
|
||||||
|
&& typedOther.prefixStyle == prefixStyle
|
||||||
|
&& typedOther.suffixStyle == suffixStyle
|
||||||
|
&& typedOther.counterStyle == counterStyle
|
||||||
|
&& typedOther.filled == filled
|
||||||
|
&& typedOther.fillColor == fillColor
|
||||||
|
&& typedOther.focusColor == focusColor
|
||||||
|
&& typedOther.hoverColor == hoverColor
|
||||||
|
&& typedOther.errorBorder == errorBorder
|
||||||
|
&& typedOther.focusedBorder == focusedBorder
|
||||||
|
&& typedOther.focusedErrorBorder == focusedErrorBorder
|
||||||
|
&& typedOther.disabledBorder == disabledBorder
|
||||||
|
&& typedOther.enabledBorder == enabledBorder
|
||||||
|
&& typedOther.border == border
|
||||||
|
&& typedOther.alignLabelWithHint == alignLabelWithHint
|
||||||
|
&& typedOther.disabledBorder == disabledBorder;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||||
super.debugFillProperties(properties);
|
super.debugFillProperties(properties);
|
||||||
|
@ -2424,6 +2424,27 @@ void main() {
|
|||||||
expect(getOpacity(tester, 'label'), 0.0);
|
expect(getOpacity(tester, 'label'), 0.0);
|
||||||
}, skip: isBrowser);
|
}, skip: isBrowser);
|
||||||
|
|
||||||
|
test('InputDecorationTheme copyWith, ==, hashCode basics', () {
|
||||||
|
expect(const InputDecorationTheme(), const InputDecorationTheme().copyWith());
|
||||||
|
expect(const InputDecorationTheme().hashCode, const InputDecorationTheme().copyWith().hashCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('InputDecorationTheme copyWith correctly copies and replaces values', () {
|
||||||
|
const InputDecorationTheme original = InputDecorationTheme(
|
||||||
|
focusColor: Colors.orange,
|
||||||
|
fillColor: Colors.green,
|
||||||
|
);
|
||||||
|
final InputDecorationTheme copy = original.copyWith(
|
||||||
|
focusColor: Colors.yellow,
|
||||||
|
fillColor: Colors.blue,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(original.focusColor, Colors.orange);
|
||||||
|
expect(original.fillColor, Colors.green);
|
||||||
|
expect(copy.focusColor, Colors.yellow);
|
||||||
|
expect(copy.fillColor, Colors.blue);
|
||||||
|
});
|
||||||
|
|
||||||
testWidgets('InputDecorationTheme outline border', (WidgetTester tester) async {
|
testWidgets('InputDecorationTheme outline border', (WidgetTester tester) async {
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
buildInputDecorator(
|
buildInputDecorator(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user