getMenuKey method

GlobalKey<State<StatefulWidget>>? getMenuKey(
  1. String index
)

获取菜单项的 GlobalKey

这个方法在计算二级菜单位置时调用,获取对应菜单项的 GlobalKey 返回的 GlobalKey 可以用于获取菜单项的位置和尺寸

@param index 菜单项的索引位置 @return 对应的 GlobalKey,如果不存在或无效则返回 null

Implementation

GlobalKey? getMenuKey(String index) {
  try {
    final key = _menuKeys[index];
    unawaited(DencendLogger.debug('获取菜单项 GlobalKey: index=$index'));
    unawaited(DencendLogger.debug('当前所有 Keys 数量: ${_menuKeys.length}'));

    // 检查 GlobalKey 是否仍然有效
    if (key != null) {
      // 检查 currentContext 是否存在且 mounted 为 true
      if (key.currentContext != null && key.currentContext!.mounted) {
        return key;
      } else {
        // GlobalKey 已失效,从映射中移除
        _menuKeys.remove(index);
        unawaited(DencendLogger.debug('移除无效的 GlobalKey: index=$index'));
        return null;
      }
    }

    return null;
  } on Exception catch (e) {
    unawaited(DencendLogger.debug('获取 GlobalKey 失败: $e'));
    return null;
  }
}