show method
void
show({
- required String id,
- String? title,
- String? content,
- List<
Widget> ? actions, - DialogPriority priority = DialogPriority.medium,
- bool isFixed = false,
- bool canBeClosed()?,
- Widget? customDialog,
override
Implementation
@override
void show({
required String id,
String? title,
String? content,
List<Widget>? actions,
DialogPriority priority = DialogPriority.medium,
bool isFixed = false,
bool Function()? canBeClosed,
Widget? customDialog,
}) {
Widget dialog = customDialog ?? _defaultDialog(title, content, actions);
bool shouldReplaceCurrent() {
if (_currentDialog == null) return true;
if (_currentDialog!.isFixed &&
!(priority.index > _currentDialog!.priority.index)) return false;
if (_currentDialog!.canBeClosed != null &&
!_currentDialog!.canBeClosed!()) {
return false;
}
return priority.index > _currentDialog!.priority.index;
}
if (shouldReplaceCurrent()) {
if (_currentDialog != null &&
navigatorKey.currentState?.canPop() == true) {
navigatorKey.currentState?.pop();
}
_currentDialog = DialogEntry(
id: id,
dialog: dialog,
priority: priority,
isFixed: isFixed,
canBeClosed: canBeClosed,
);
WidgetsBinding.instance.addPostFrameCallback((_) {
navigatorKey.currentState?.push(
PageRouteBuilder(
opaque: false,
pageBuilder: (_, __, ___) => WillPopScope(
child: _currentDialog!.dialog,
onWillPop: () async => !isFixed,
),
),
);
});
}
}