dismiss<T extends Object?> static method
void
dismiss<T extends Object?>({
- required BuildContext context,
- String tag = _safeDialogDefaultTag,
- T? result,
用于关闭某个 Dialog,仅移除对应 tag 列表中最后入栈的 Dialog
tag
: 用于移除对应 tag 的 Dialog
注意, 1、直接 remove 不会调用 push future 的 then 回调,使用 Completer 转发; 2、当 router 不在队列队列中时会抛异常,catch 并打印异常日志。
Implementation
static void dismiss<T extends Object?>({
required BuildContext context,
String tag = _safeDialogDefaultTag,
T? result,
}) {
List<_SafeDialogRoute> typeStates = (_dialogStates[tag] ??= []);
if (typeStates.isNotEmpty) {
try {
_SafeDialogRoute _safeDialogRoute = typeStates.removeLast();
Navigator.removeRoute(context, _safeDialogRoute);
if (!_safeDialogRoute.completer.isCompleted) {
_safeDialogRoute.completer.complete(result);
}
} catch (e) {
/// TODO 可能会抛出异常, 直接打印到日志区
print(e);
}
}
}