unregisterPopGestureCallback method

  1. @override
void unregisterPopGestureCallback(
  1. BuildContext context
)
override

注销系统返回手势的回调

参数:

  • context: 注册回调时使用的 BuildContext

Implementation

@override
void unregisterPopGestureCallback(BuildContext context) {
  // O(1) 从 Map 删除
  _callbackMap.remove(context);
  // O(n) 从顺序列表删除,但可以顺便清理无效条目
  _callbackOrder.removeWhere((ctx) {
    if (ctx == context) return true;
    // 顺便清理已 unmounted 的 context
    final entry = _callbackMap[ctx];
    if (entry != null && entry.shouldRemove()) {
      _callbackMap.remove(ctx);
      return true;
    }
    return false;
  });
}