cleanupInvalidKeys method

void cleanupInvalidKeys()

清理所有无效的 GlobalKey

检查所有注册的 GlobalKey,移除那些已失效的键 建议在切换应用或执行大量操作后调用此方法

Implementation

void cleanupInvalidKeys() {
  try {
    final invalidKeys = <String>[];
    _menuKeys.forEach((index, key) {
      // 检查 GlobalKey 是否仍然有效
      if (key.currentContext == null || !key.currentContext!.mounted) {
        invalidKeys.add(index);
      }
    });

    // 移除所有无效的键
    for (final index in invalidKeys) {
      _menuKeys.remove(index);
      unawaited(DencendLogger.debug('清理无效的 GlobalKey: index=$index'));
    }

    if (invalidKeys.isNotEmpty) {
      unawaited(DencendLogger.debug('清理完成,移除了 ${invalidKeys.length} 个无效的 GlobalKey'));
    }
  } on Exception catch (e) {
    unawaited(DencendLogger.debug('清理无效 GlobalKey 失败: $e'));
  }
}