diff --git a/packages/flutter/lib/src/material/chip.dart b/packages/flutter/lib/src/material/chip.dart index bc361579bb..d891c9a67d 100644 --- a/packages/flutter/lib/src/material/chip.dart +++ b/packages/flutter/lib/src/material/chip.dart @@ -19,6 +19,7 @@ import 'ink_well.dart'; 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 @@ class RawChip extends StatefulWidget State createState() => _RawChipState(); } -class _RawChipState extends State with TickerProviderStateMixin { +class _RawChipState extends State with MaterialStateMixin, TickerProviderStateMixin { static const Duration pressedAnimationDuration = Duration(milliseconds: 75); late AnimationController selectController; @@ -853,7 +854,6 @@ class _RawChipState extends State with TickerProviderStateMixin deleteDrawerAnimation; late Animation enableAnimation; late Animation selectionFade; - late final Set states; bool get hasDeleteButton => widget.onDeleted != null; bool get hasAvatar => widget.avatar != null; @@ -871,10 +871,8 @@ class _RawChipState extends State with TickerProviderStateMixin{ - 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 @@ class _RawChipState extends State with TickerProviderStateMixin with TickerProviderStateMixin with TickerProviderStateMixin with TickerProviderStateMixin(widget.side, states) - ?? MaterialStateProperty.resolveAs(chipTheme.side, states) - ?? MaterialStateProperty.resolveAs(chipDefaults.side, states); - final OutlinedBorder resolvedShape = MaterialStateProperty.resolveAs(widget.shape, states) - ?? MaterialStateProperty.resolveAs(chipTheme.shape, states) - ?? MaterialStateProperty.resolveAs(chipDefaults.shape, states) + final BorderSide? resolvedSide = MaterialStateProperty.resolveAs(widget.side, materialStates) + ?? MaterialStateProperty.resolveAs(chipTheme.side, materialStates) + ?? MaterialStateProperty.resolveAs(chipDefaults.side, materialStates); + final OutlinedBorder resolvedShape = MaterialStateProperty.resolveAs(widget.shape, materialStates) + ?? MaterialStateProperty.resolveAs(chipTheme.shape, materialStates) + ?? MaterialStateProperty.resolveAs(chipDefaults.shape, materialStates) ?? const StadiumBorder(); return resolvedShape.copyWith(side: resolvedSide); } @@ -1054,9 +1032,7 @@ class _RawChipState extends State with TickerProviderStateMixin with TickerProviderStateMixin with TickerProviderStateMixin(effectiveLabelStyle.color, states); + final Color? resolvedLabelColor = MaterialStateProperty.resolveAs(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 @@ class _RawChipState extends State with TickerProviderStateMixin[selectController, enableController]),