Skip to content

Commit

Permalink
RenderAnnotatedRegion should dispose created layers. (#136086)
Browse files Browse the repository at this point in the history
  • Loading branch information
ksokolovskyi authored Oct 10, 2023
1 parent eec3f06 commit 5d9983a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
10 changes: 10 additions & 0 deletions packages/flutter/lib/src/rendering/proxy_box.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4989,6 +4989,7 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
RenderBox? child,
}) : _value = value,
_sized = sized,
_layerHandle = LayerHandle<AnnotatedRegionLayer<T>>(),
super(child);

/// A value which can be retrieved using [Layer.find].
Expand All @@ -5013,6 +5014,8 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
markNeedsPaint();
}

final LayerHandle<AnnotatedRegionLayer<T>> _layerHandle;

@override
final bool alwaysNeedsCompositing = true;

Expand All @@ -5024,6 +5027,13 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
size: sized ? size : null,
offset: sized ? offset : null,
);
_layerHandle.layer = layer;
context.pushLayer(layer, super.paint, offset);
}

@override
void dispose() {
_layerHandle.layer = null;
super.dispose();
}
}
14 changes: 2 additions & 12 deletions packages/flutter/test/material/date_picker_theme_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -552,12 +552,7 @@ void main() {
await gesture.moveTo(tester.getCenter(find.text('18')));
await tester.pumpAndSettle();
expect(inkFeatures, paints..circle(color: datePickerTheme.rangeSelectionOverlayColor?.resolve(<MaterialState>{})));
},
leakTrackingTestConfig: const LeakTrackingTestConfig(
// TODO(ksokolovskyi): remove after fixing
// https://github.com/flutter/flutter/issues/136036
notDisposedAllowList: <String, int?> {'AnnotatedRegionLayer<SystemUiOverlayStyle>': 2},
));
});

testWidgetsWithLeakTracking('Dividers use DatePickerThemeData.dividerColor', (WidgetTester tester) async {
Future<void> showPicker(WidgetTester tester, Size size) async {
Expand Down Expand Up @@ -902,10 +897,5 @@ void main() {
..circle(color: rangeSelectionOverlayColor.resolve(<MaterialState>{MaterialState.pressed})),
);
}
},
leakTrackingTestConfig: const LeakTrackingTestConfig(
// TODO(ksokolovskyi): remove after fixing
// https://github.com/flutter/flutter/issues/136036
notDisposedAllowList: <String, int?> {'AnnotatedRegionLayer<SystemUiOverlayStyle>': 2},
));
});
}

0 comments on commit 5d9983a

Please sign in to comment.