RenderAnnotatedRegion should dispose created layers. (#136086)

This commit is contained in:
Kostia Sokolovskyi 2023-10-10 17:32:01 +02:00 committed by GitHub
parent eec3f06090
commit 5d9983a125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 12 deletions

View File

@ -4989,6 +4989,7 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
RenderBox? child, RenderBox? child,
}) : _value = value, }) : _value = value,
_sized = sized, _sized = sized,
_layerHandle = LayerHandle<AnnotatedRegionLayer<T>>(),
super(child); super(child);
/// A value which can be retrieved using [Layer.find]. /// A value which can be retrieved using [Layer.find].
@ -5013,6 +5014,8 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
markNeedsPaint(); markNeedsPaint();
} }
final LayerHandle<AnnotatedRegionLayer<T>> _layerHandle;
@override @override
final bool alwaysNeedsCompositing = true; final bool alwaysNeedsCompositing = true;
@ -5024,6 +5027,13 @@ class RenderAnnotatedRegion<T extends Object> extends RenderProxyBox {
size: sized ? size : null, size: sized ? size : null,
offset: sized ? offset : null, offset: sized ? offset : null,
); );
_layerHandle.layer = layer;
context.pushLayer(layer, super.paint, offset); context.pushLayer(layer, super.paint, offset);
} }
@override
void dispose() {
_layerHandle.layer = null;
super.dispose();
}
} }

View File

@ -552,12 +552,7 @@ void main() {
await gesture.moveTo(tester.getCenter(find.text('18'))); await gesture.moveTo(tester.getCenter(find.text('18')));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(inkFeatures, paints..circle(color: datePickerTheme.rangeSelectionOverlayColor?.resolve(<MaterialState>{}))); 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 { testWidgetsWithLeakTracking('Dividers use DatePickerThemeData.dividerColor', (WidgetTester tester) async {
Future<void> showPicker(WidgetTester tester, Size size) async { Future<void> showPicker(WidgetTester tester, Size size) async {
@ -902,10 +897,5 @@ void main() {
..circle(color: rangeSelectionOverlayColor.resolve(<MaterialState>{MaterialState.pressed})), ..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},
));
} }