@@ -129,11 +129,6 @@ class ObjectKey extends LocalKey {
129129 }
130130}
131131
132- /// Signature for a callback when a global key is removed from the tree.
133- ///
134- /// Used by [GlobalKey.registerRemoveListener] .
135- typedef void GlobalKeyRemoveListener (GlobalKey key);
136-
137132/// A key that is unique across the entire app.
138133///
139134/// Global keys uniquely identify elements. Global keys provide access to other
@@ -168,7 +163,6 @@ abstract class GlobalKey<T extends State<StatefulWidget>> extends Key {
168163 const GlobalKey .constructor () : super ._();
169164
170165 static final Map <GlobalKey , Element > _registry = < GlobalKey , Element > {};
171- static final Map <GlobalKey , Set <GlobalKeyRemoveListener >> _removeListeners = < GlobalKey , Set <GlobalKeyRemoveListener >> {};
172166 static final Set <GlobalKey > _removedKeys = new HashSet <GlobalKey >();
173167 static final Set <Element > _debugIllFatedElements = new HashSet <Element >();
174168 static final Map <GlobalKey , Element > _debugReservations = < GlobalKey , Element > {};
@@ -297,53 +291,6 @@ abstract class GlobalKey<T extends State<StatefulWidget>> extends Key {
297291 }
298292 return null ;
299293 }
300-
301- /// Calls `listener` whenever a widget with the given global key is removed
302- /// from the tree.
303- ///
304- /// Listeners can be removed with [unregisterRemoveListener] .
305- static void registerRemoveListener (GlobalKey key, GlobalKeyRemoveListener listener) {
306- assert (key != null );
307- final Set <GlobalKeyRemoveListener > listeners =
308- _removeListeners.putIfAbsent (key, () => new HashSet <GlobalKeyRemoveListener >());
309- final bool added = listeners.add (listener);
310- assert (added);
311- }
312-
313- /// Stop calling `listener` whenever a widget with the given global key is
314- /// removed from the tree.
315- ///
316- /// Listeners can be added with [registerRemoveListener] .
317- static void unregisterRemoveListener (GlobalKey key, GlobalKeyRemoveListener listener) {
318- assert (key != null );
319- assert (_removeListeners.containsKey (key));
320- assert (_removeListeners[key].contains (listener));
321- final bool removed = _removeListeners[key].remove (listener);
322- if (_removeListeners[key].isEmpty)
323- _removeListeners.remove (key);
324- assert (removed);
325- }
326-
327- static void _notifyListeners () {
328- if (_removedKeys.isEmpty)
329- return ;
330- try {
331- for (GlobalKey key in _removedKeys) {
332- if (! _registry.containsKey (key) && _removeListeners.containsKey (key)) {
333- final Set <GlobalKeyRemoveListener > localListeners = new HashSet <GlobalKeyRemoveListener >.from (_removeListeners[key]);
334- for (GlobalKeyRemoveListener listener in localListeners) {
335- try {
336- listener (key);
337- } catch (e, stack) {
338- _debugReportException ('while notifying GlobalKey listener' , e, stack);
339- }
340- }
341- }
342- }
343- } finally {
344- _removedKeys.clear ();
345- }
346- }
347294}
348295
349296/// A global key with a debugging label.
@@ -2082,7 +2029,6 @@ class BuildOwner {
20822029 }
20832030 return true ;
20842031 });
2085- scheduleMicrotask (GlobalKey ._notifyListeners);
20862032 } catch (e, stack) {
20872033 _debugReportException ('while finalizing the widget tree' , e, stack);
20882034 } finally {
0 commit comments