closeDialogsAboveLevel static method

void closeDialogsAboveLevel(
  1. int level, {
  2. DialogReturnTypeEnum? returnType,
})

关闭指定层级及以上的所有弹窗 level 层级深度

Implementation

static void closeDialogsAboveLevel(
  int level, {
  DialogReturnTypeEnum? returnType,
}) {
  final keysToClose = <String>[];
  for (final entry in _dialogLevels.entries) {
    final levels = entry.value;
    // 检查是否有任何实例的层级 >= level
    if (levels.any((l) => l >= level)) {
      keysToClose.add(entry.key);
    }
  }

  TCICLog.info(
    'Closing dialogs above level $level, count: ${keysToClose.length}',
    actionModule: ActionModule.tools.name,
    actionName: ActionName.showModalDailog.name,
  );

  for (final key in keysToClose) {
    final contexts = _dialogContexts[key];
    if (contexts != null && contexts.isNotEmpty) {
      // 关闭该key的所有实例
      closeModalDailog(
        contexts.first,
        key,
        returnType: returnType,
        closeAll: true,
      );
    }
  }
}