From aa1bacb35a88fe464c636fde4cb8e7daea4de567 Mon Sep 17 00:00:00 2001 From: Polina Cherkasova Date: Thu, 17 Aug 2023 12:11:24 -0700 Subject: [PATCH] Leaks fix. (#132778) Fixes https://github.com/flutter/flutter/issues/132769 --- packages/flutter/lib/src/material/menu_anchor.dart | 2 ++ packages/flutter/lib/src/widgets/focus_manager.dart | 1 + packages/flutter/test/material/menu_bar_theme_test.dart | 4 ---- packages/flutter/test/material/menu_theme_test.dart | 4 ---- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/flutter/lib/src/material/menu_anchor.dart b/packages/flutter/lib/src/material/menu_anchor.dart index dd293e4340..f2dfeeea5e 100644 --- a/packages/flutter/lib/src/material/menu_anchor.dart +++ b/packages/flutter/lib/src/material/menu_anchor.dart @@ -303,6 +303,7 @@ class _MenuAnchorState extends State { _anchorChildren.clear(); _menuController._detach(this); _internalMenuController = null; + _menuScopeNode.dispose(); super.dispose(); } @@ -551,6 +552,7 @@ class _MenuAnchorState extends State { } _closeChildren(inDispose: inDispose); _overlayEntry?.remove(); + _overlayEntry?.dispose(); _overlayEntry = null; if (!inDispose) { // Notify that _childIsOpen changed state, but only if not diff --git a/packages/flutter/lib/src/widgets/focus_manager.dart b/packages/flutter/lib/src/widgets/focus_manager.dart index f534b992f7..9a4576ea32 100644 --- a/packages/flutter/lib/src/widgets/focus_manager.dart +++ b/packages/flutter/lib/src/widgets/focus_manager.dart @@ -1480,6 +1480,7 @@ class FocusManager with DiagnosticableTreeMixin, ChangeNotifier { @override void dispose() { _highlightManager.dispose(); + rootScope.dispose(); super.dispose(); } diff --git a/packages/flutter/test/material/menu_bar_theme_test.dart b/packages/flutter/test/material/menu_bar_theme_test.dart index c4717282c3..2b9dabe7f4 100644 --- a/packages/flutter/test/material/menu_bar_theme_test.dart +++ b/packages/flutter/test/material/menu_bar_theme_test.dart @@ -2,10 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Fails with "flutter test --test-randomize-ordering-seed=20230817" -@Tags(['no-shuffle']) -library; - import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart'; diff --git a/packages/flutter/test/material/menu_theme_test.dart b/packages/flutter/test/material/menu_theme_test.dart index b5437e3864..bb4c0cd3ce 100644 --- a/packages/flutter/test/material/menu_theme_test.dart +++ b/packages/flutter/test/material/menu_theme_test.dart @@ -2,10 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Fails with "flutter test --test-randomize-ordering-seed=20230817" -@Tags(['no-shuffle']) -library; - import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';