Skip to content

Commit

Permalink
Fix _paintAvatar in chip.dart to dispose layer. (flutter#135228)
Browse files Browse the repository at this point in the history
  • Loading branch information
polina-c authored and Mairramer committed Oct 10, 2023
1 parent c02f738 commit 707fccc
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions packages/flutter/lib/src/material/chip.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2065,21 +2065,26 @@ class _RenderChip extends RenderBox with SlottedContainerRenderObjectMixin<_Chip
}
}

final LayerHandle<OpacityLayer> _childOpacityLayerHandler = LayerHandle<OpacityLayer>();

void _paintChild(PaintingContext context, Offset offset, RenderBox? child, bool? isEnabled) {
if (child == null) {
_childOpacityLayerHandler.layer = null;
return;
}
final int disabledColorAlpha = _disabledColor.alpha;
if (!enableAnimation.isCompleted) {
if (needsCompositing) {
context.pushLayer(
OpacityLayer(alpha: disabledColorAlpha),
_childOpacityLayerHandler.layer = context.pushOpacity(
offset,
disabledColorAlpha,
(PaintingContext context, Offset offset) {
context.paintChild(child, _boxParentData(child).offset + offset);
},
offset,
oldLayer: _childOpacityLayerHandler.layer,
);
} else {
_childOpacityLayerHandler.layer = null;
final Rect childRect = _boxRect(child).shift(offset);
context.canvas.saveLayer(childRect.inflate(20.0), Paint()..color = _disabledColor);
context.paintChild(child, _boxParentData(child).offset + offset);
Expand All @@ -2092,6 +2097,7 @@ class _RenderChip extends RenderBox with SlottedContainerRenderObjectMixin<_Chip

@override
void dispose() {
_childOpacityLayerHandler.layer = null;
_avatarOpacityLayerHandler.layer = null;
super.dispose();
}
Expand Down

0 comments on commit 707fccc

Please sign in to comment.