From c9f70e9fd265afdb0a89ce0f5a1d230c30636639 Mon Sep 17 00:00:00 2001 From: Polina Cherkasova Date: Tue, 5 Sep 2023 13:12:28 -0700 Subject: [PATCH] _SearchBarState should dispose FocusNode, if it created it. (#133947) --- packages/flutter/lib/src/material/search_anchor.dart | 3 +++ packages/flutter/test/material/search_anchor_test.dart | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/material/search_anchor.dart b/packages/flutter/lib/src/material/search_anchor.dart index 6cb8c22c1c..4897de7449 100644 --- a/packages/flutter/lib/src/material/search_anchor.dart +++ b/packages/flutter/lib/src/material/search_anchor.dart @@ -1179,6 +1179,9 @@ class _SearchBarState extends State { @override void dispose() { _internalStatesController.dispose(); + if (widget.focusNode == null) { + _focusNode.dispose(); + } super.dispose(); } diff --git a/packages/flutter/test/material/search_anchor_test.dart b/packages/flutter/test/material/search_anchor_test.dart index c044bdfc0a..c2af15aad9 100644 --- a/packages/flutter/test/material/search_anchor_test.dart +++ b/packages/flutter/test/material/search_anchor_test.dart @@ -6,9 +6,10 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart'; void main() { - testWidgets('SearchBar defaults', (WidgetTester tester) async { + testWidgetsWithLeakTracking('SearchBar defaults', (WidgetTester tester) async { final ThemeData theme = ThemeData(useMaterial3: true); final ColorScheme colorScheme = theme.colorScheme;