closeTopDialog static method

void closeTopDialog({
  1. DialogReturnTypeEnum? returnType,
})

关闭最顶层的弹窗

Implementation

static void closeTopDialog({DialogReturnTypeEnum? returnType}) {
  if (_dialogLevels.isEmpty) {
    TCICLog.info(
      'No active dialogs to close',
      actionModule: ActionModule.tools.name,
      actionName: ActionName.showModalDailog.name,
    );
    return;
  }

  // 找到层级最高的弹窗(遍历所有实例)
  String? topDialogKey;
  int maxLevel = -1;

  for (final entry in _dialogLevels.entries) {
    final levels = entry.value;
    if (levels.isNotEmpty) {
      final levelMax = levels.reduce((a, b) => a > b ? a : b);
      if (levelMax > maxLevel) {
        maxLevel = levelMax;
        topDialogKey = entry.key;
      }
    }
  }

  if (topDialogKey != null) {
    final contexts = _dialogContexts[topDialogKey];
    if (contexts != null && contexts.isNotEmpty) {
      // 只关闭最顶层的(最后一个)
      closeModalDailog(
        contexts.first,
        topDialogKey,
        returnType: returnType,
        closeAll: false,
      );
    }
  }
}