Fix leaking curved animation. (#146644)
diff --git a/packages/flutter/lib/src/material/slider.dart b/packages/flutter/lib/src/material/slider.dart
index 24e5222..442a0cc 100644
--- a/packages/flutter/lib/src/material/slider.dart
+++ b/packages/flutter/lib/src/material/slider.dart
@@ -1140,9 +1140,9 @@
double get _minPreferredTrackHeight => _sliderTheme.trackHeight!;
final _SliderState _state;
- late Animation<double> _overlayAnimation;
- late Animation<double> _valueIndicatorAnimation;
- late Animation<double> _enableAnimation;
+ late CurvedAnimation _overlayAnimation;
+ late CurvedAnimation _valueIndicatorAnimation;
+ late CurvedAnimation _enableAnimation;
final TextPainter _labelPainter = TextPainter();
late HorizontalDragGestureRecognizer _drag;
late TapGestureRecognizer _tap;
@@ -1451,6 +1451,9 @@
_drag.dispose();
_tap.dispose();
_labelPainter.dispose();
+ _enableAnimation.dispose();
+ _valueIndicatorAnimation.dispose();
+ _overlayAnimation.dispose();
super.dispose();
}
diff --git a/packages/flutter/test/painting/system_fonts_test.dart b/packages/flutter/test/painting/system_fonts_test.dart
index 480e651..2b7a2ae 100644
--- a/packages/flutter/test/painting/system_fonts_test.dart
+++ b/packages/flutter/test/painting/system_fonts_test.dart
@@ -10,6 +10,7 @@
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
+import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
Future<void> verifyMarkedNeedsLayoutDuringTransientCallbacksPhase(WidgetTester tester, RenderObject renderObject) async {
assert(!renderObject.debugNeedsLayout);
@@ -189,7 +190,7 @@
expect(element.dirty, isTrue);
}, skip: isBrowser); // TODO(yjbanov): cupertino does not work on the Web yet: https://github.com/flutter/flutter/issues/41920
- testWidgets('RangeSlider relayout upon system fonts changes', (WidgetTester tester) async {
+ testWidgets('RangeSlider relayout upon system fonts changes more than once', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
home: Material(
@@ -212,7 +213,10 @@
await verifyMarkedNeedsLayoutDuringTransientCallbacksPhase(tester, renderObject);
});
- testWidgets('Slider relayout upon system fonts changes', (WidgetTester tester) async {
+ testWidgets('Slider relayout upon system fonts changes',
+ // TODO(polina-c): remove when fixed https://github.com/flutter/flutter/issues/145600 [leak-tracking-opt-in]
+ experimentalLeakTesting: LeakTesting.settings.withTracked(classes: <String>['CurvedAnimation']),
+ (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
home: Material(