Skip to content

Commit 1189d44

Browse files
Fix _RenderValueIndicator leak (#147451)
1 parent f9933b6 commit 1189d44

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

packages/flutter/lib/src/material/slider.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1868,7 +1868,7 @@ class _RenderValueIndicator extends RenderBox with RelayoutWhenSystemFontsChange
18681868
curve: Curves.fastOutSlowIn,
18691869
);
18701870
}
1871-
late Animation<double> _valueIndicatorAnimation;
1871+
late CurvedAnimation _valueIndicatorAnimation;
18721872
_SliderState _state;
18731873

18741874
@override
@@ -1897,6 +1897,12 @@ class _RenderValueIndicator extends RenderBox with RelayoutWhenSystemFontsChange
18971897
Size computeDryLayout(BoxConstraints constraints) {
18981898
return constraints.smallest;
18991899
}
1900+
1901+
@override
1902+
void dispose() {
1903+
_valueIndicatorAnimation.dispose();
1904+
super.dispose();
1905+
}
19001906
}
19011907

19021908
class _SliderDefaultsM2 extends SliderThemeData {

packages/flutter/test/material/slider_test.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:flutter/scheduler.dart';
1313
import 'package:flutter/services.dart';
1414
import 'package:flutter/src/physics/utils.dart' show nearEqual;
1515
import 'package:flutter_test/flutter_test.dart';
16+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1617

1718
import '../widgets/semantics_tester.dart';
1819

@@ -140,7 +141,10 @@ void main() {
140141
expect(log[0], const Offset(212.0, 300.0));
141142
});
142143

143-
testWidgets('Slider can move when tapped (LTR)', (WidgetTester tester) async {
144+
testWidgets(
145+
// TODO(polina-c): remove when fixed https://github.com/flutter/flutter/issues/145600 [leak-tracking-opt-in]
146+
experimentalLeakTesting: LeakTesting.settings.withTracked(classes: <String>['CurvedAnimation']),
147+
'Slider can move when tapped (LTR)', (WidgetTester tester) async {
144148
final Key sliderKey = UniqueKey();
145149
double value = 0.0;
146150
double? startValue;

0 commit comments

Comments
 (0)