Fix memory leak in ExpansionTile. (#147596)

This commit is contained in:
Kostia Sokolovskyi 2024-05-05 03:19:29 +02:00 committed by GitHub
parent eeb351ce4b
commit 145e94018c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 1 deletions

View File

@ -613,6 +613,7 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
void dispose() {
_tileController._state = null;
_animationController.dispose();
_heightFactor.dispose();
_timer?.cancel();
_timer = null;
super.dispose();

View File

@ -11,6 +11,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
class TestIcon extends StatefulWidget {
const TestIcon({super.key});
@ -222,7 +223,10 @@ void main() {
expect(iconColor(collapsedIconKey), foregroundColor);
}, variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }));
testWidgets('ExpansionTile subtitle', (WidgetTester tester) async {
testWidgets('ExpansionTile subtitle',
// TODO(polina-c): remove when fixed https://github.com/flutter/flutter/issues/145600 [leak-tracking-opt-in]
experimentalLeakTesting: LeakTesting.settings.withTracked(classes: const <String>['CurvedAnimation']),
(WidgetTester tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Scaffold(