Skip to content

Commit 5ebc940

Browse files
authored
Fix leaking curved animation. (#146644)
1 parent 000101a commit 5ebc940

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,9 +1140,9 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
11401140
double get _minPreferredTrackHeight => _sliderTheme.trackHeight!;
11411141

11421142
final _SliderState _state;
1143-
late Animation<double> _overlayAnimation;
1144-
late Animation<double> _valueIndicatorAnimation;
1145-
late Animation<double> _enableAnimation;
1143+
late CurvedAnimation _overlayAnimation;
1144+
late CurvedAnimation _valueIndicatorAnimation;
1145+
late CurvedAnimation _enableAnimation;
11461146
final TextPainter _labelPainter = TextPainter();
11471147
late HorizontalDragGestureRecognizer _drag;
11481148
late TapGestureRecognizer _tap;
@@ -1451,6 +1451,9 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
14511451
_drag.dispose();
14521452
_tap.dispose();
14531453
_labelPainter.dispose();
1454+
_enableAnimation.dispose();
1455+
_valueIndicatorAnimation.dispose();
1456+
_overlayAnimation.dispose();
14541457
super.dispose();
14551458
}
14561459

packages/flutter/test/painting/system_fonts_test.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:flutter/material.dart';
1010
import 'package:flutter/rendering.dart';
1111
import 'package:flutter/services.dart';
1212
import 'package:flutter_test/flutter_test.dart';
13+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1314

1415
Future<void> verifyMarkedNeedsLayoutDuringTransientCallbacksPhase(WidgetTester tester, RenderObject renderObject) async {
1516
assert(!renderObject.debugNeedsLayout);
@@ -189,7 +190,7 @@ void main() {
189190
expect(element.dirty, isTrue);
190191
}, skip: isBrowser); // TODO(yjbanov): cupertino does not work on the Web yet: https://github.com/flutter/flutter/issues/41920
191192

192-
testWidgets('RangeSlider relayout upon system fonts changes', (WidgetTester tester) async {
193+
testWidgets('RangeSlider relayout upon system fonts changes more than once', (WidgetTester tester) async {
193194
await tester.pumpWidget(
194195
MaterialApp(
195196
home: Material(
@@ -212,7 +213,10 @@ void main() {
212213
await verifyMarkedNeedsLayoutDuringTransientCallbacksPhase(tester, renderObject);
213214
});
214215

215-
testWidgets('Slider relayout upon system fonts changes', (WidgetTester tester) async {
216+
testWidgets('Slider relayout upon system fonts changes',
217+
// TODO(polina-c): remove when fixed https://github.com/flutter/flutter/issues/145600 [leak-tracking-opt-in]
218+
experimentalLeakTesting: LeakTesting.settings.withTracked(classes: <String>['CurvedAnimation']),
219+
(WidgetTester tester) async {
216220
await tester.pumpWidget(
217221
MaterialApp(
218222
home: Material(

0 commit comments

Comments
 (0)