addDialog<T> method
Implementation
Future<T?> addDialog<T>(DialogQueueElement dialog) {
// 入列前查重,直接替换已存在的并复用与之对应的 Completer
List<DialogQueueElement> keyList = _dialogQueue.keys.cast<DialogQueueElement>().toList();
int existIndex = keyList.indexOf(dialog);
if (existIndex >= 0) {
DialogQueueElement currentDialog = keyList.elementAt(existIndex);
Completer<T?> existCompleter = _dialogQueue[currentDialog] as Completer<T?>;
// 更新对话框
currentDialog.update(dialog);
// 更新排序
_sortQueue();
return existCompleter.future;
}
Completer<T?> dialogCompleter = Completer();
_dialogQueue[dialog] = dialogCompleter;
// 按优先级排序
_sortQueue();
// 弹出最近对话框
_showNext();
return dialogCompleter.future;
}