closeTopDialog static method
关闭最顶层的弹窗
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,
);
}
}
}