[CP] Revert "Update `chip.dart` to use set of `MaterialState`" (#128607) (#128850)
Co-authored-by: Hans Muller <hans.muller@gmail.com>
diff --git a/packages/flutter/lib/src/material/chip.dart b/packages/flutter/lib/src/material/chip.dart
index 4ffa1a0..fb55625 100644
--- a/packages/flutter/lib/src/material/chip.dart
+++ b/packages/flutter/lib/src/material/chip.dart
@@ -19,6 +19,7 @@
import 'material.dart';
import 'material_localizations.dart';
import 'material_state.dart';
+import 'material_state_mixin.dart';
import 'text_theme.dart';
import 'theme.dart';
import 'theme_data.dart';
@@ -841,7 +842,7 @@
State<RawChip> createState() => _RawChipState();
}
-class _RawChipState extends State<RawChip> with TickerProviderStateMixin<RawChip> {
+class _RawChipState extends State<RawChip> with MaterialStateMixin, TickerProviderStateMixin<RawChip> {
static const Duration pressedAnimationDuration = Duration(milliseconds: 75);
late AnimationController selectController;
@@ -853,7 +854,6 @@
late Animation<double> deleteDrawerAnimation;
late Animation<double> enableAnimation;
late Animation<double> selectionFade;
- late final Set<MaterialState> states;
bool get hasDeleteButton => widget.onDeleted != null;
bool get hasAvatar => widget.avatar != null;
@@ -871,10 +871,8 @@
void initState() {
assert(widget.onSelected == null || widget.onPressed == null);
super.initState();
- states = <MaterialState>{
- if (!widget.isEnabled) MaterialState.disabled,
- if (widget.selected) MaterialState.selected,
- };
+ setMaterialState(MaterialState.disabled, !widget.isEnabled);
+ setMaterialState(MaterialState.selected, widget.selected);
selectController = AnimationController(
duration: _kSelectDuration,
value: widget.selected ? 1.0 : 0.0,
@@ -949,7 +947,7 @@
if (!canTap) {
return;
}
- states.add(MaterialState.pressed);
+ setMaterialState(MaterialState.pressed, true);
setState(() {
_isTapping = true;
});
@@ -959,7 +957,7 @@
if (!canTap) {
return;
}
- states.remove(MaterialState.pressed);
+ setMaterialState(MaterialState.pressed, false);
setState(() {
_isTapping = false;
});
@@ -969,7 +967,7 @@
if (!canTap) {
return;
}
- states.remove(MaterialState.pressed);
+ setMaterialState(MaterialState.pressed, false);
setState(() {
_isTapping = false;
});
@@ -978,33 +976,13 @@
widget.onPressed?.call();
}
- void _updateFocusState(bool focused) {
- setState(() {
- if (focused) {
- states.add(MaterialState.focused);
- } else {
- states.remove(MaterialState.focused);
- }
- });
- }
-
- void _updateHoverState(bool hovered) {
- setState(() {
- if (hovered) {
- states.add(MaterialState.hovered);
- } else {
- states.remove(MaterialState.hovered);
- }
- });
- }
-
OutlinedBorder _getShape(ThemeData theme, ChipThemeData chipTheme, ChipThemeData chipDefaults) {
- final BorderSide? resolvedSide = MaterialStateProperty.resolveAs<BorderSide?>(widget.side, states)
- ?? MaterialStateProperty.resolveAs<BorderSide?>(chipTheme.side, states)
- ?? MaterialStateProperty.resolveAs<BorderSide?>(chipDefaults.side, states);
- final OutlinedBorder resolvedShape = MaterialStateProperty.resolveAs<OutlinedBorder?>(widget.shape, states)
- ?? MaterialStateProperty.resolveAs<OutlinedBorder?>(chipTheme.shape, states)
- ?? MaterialStateProperty.resolveAs<OutlinedBorder?>(chipDefaults.shape, states)
+ final BorderSide? resolvedSide = MaterialStateProperty.resolveAs<BorderSide?>(widget.side, materialStates)
+ ?? MaterialStateProperty.resolveAs<BorderSide?>(chipTheme.side, materialStates)
+ ?? MaterialStateProperty.resolveAs<BorderSide?>(chipDefaults.side, materialStates);
+ final OutlinedBorder resolvedShape = MaterialStateProperty.resolveAs<OutlinedBorder?>(widget.shape, materialStates)
+ ?? MaterialStateProperty.resolveAs<OutlinedBorder?>(chipTheme.shape, materialStates)
+ ?? MaterialStateProperty.resolveAs<OutlinedBorder?>(chipDefaults.shape, materialStates)
?? const StadiumBorder();
return resolvedShape.copyWith(side: resolvedSide);
}
@@ -1054,9 +1032,7 @@
super.didUpdateWidget(oldWidget);
if (oldWidget.isEnabled != widget.isEnabled) {
setState(() {
- if (!widget.isEnabled) {
- states.add(MaterialState.disabled);
- }
+ setMaterialState(MaterialState.disabled, !widget.isEnabled);
if (widget.isEnabled) {
enableController.forward();
} else {
@@ -1075,9 +1051,7 @@
}
if (oldWidget.selected != widget.selected) {
setState(() {
- if (widget.selected) {
- states.add(MaterialState.selected);
- }
+ setMaterialState(MaterialState.selected, widget.selected);
if (widget.selected) {
selectController.forward();
} else {
@@ -1213,7 +1187,7 @@
?? chipDefaults.iconTheme;
final TextStyle effectiveLabelStyle = labelStyle.merge(widget.labelStyle);
- final Color? resolvedLabelColor = MaterialStateProperty.resolveAs<Color?>(effectiveLabelStyle.color, states);
+ final Color? resolvedLabelColor = MaterialStateProperty.resolveAs<Color?>(effectiveLabelStyle.color, materialStates);
final TextStyle resolvedLabelStyle = effectiveLabelStyle.copyWith(color: resolvedLabelColor);
final Widget? avatar = iconTheme != null && hasAvatar
? IconTheme(data: iconTheme, child: widget.avatar!)
@@ -1227,14 +1201,14 @@
shape: resolvedShape,
clipBehavior: widget.clipBehavior,
child: InkWell(
- onFocusChange: _updateFocusState,
+ onFocusChange: updateMaterialState(MaterialState.focused),
focusNode: widget.focusNode,
autofocus: widget.autofocus,
canRequestFocus: widget.isEnabled,
onTap: canTap ? _handleTap : null,
onTapDown: canTap ? _handleTapDown : null,
onTapCancel: canTap ? _handleTapCancel : null,
- onHover: canTap ? _updateHoverState : null,
+ onHover: canTap ? updateMaterialState(MaterialState.hovered) : null,
customBorder: resolvedShape,
child: AnimatedBuilder(
animation: Listenable.merge(<Listenable>[selectController, enableController]),