showDialog<T> static method

Future<T?> showDialog<T>({
  1. Widget? title,
  2. Widget? content,
  3. Widget? cancel,
  4. Widget? confirm,
  5. EdgeInsets? titlePadding,
  6. EdgeInsets? contentPadding,
  7. EdgeInsets? actionPadding,
  8. VoidCallback? onConfirm,
  9. VoidCallback? onCancel,
  10. bool showCancel = true,
  11. List<Widget>? actions,
  12. Widget? foot,
  13. bool showClose = false,
  14. bool barrierDismissible = false,
  15. TextDirection? actionTextDirection,
  16. double actionSpacing = _defaultActionSpacing,
})

显示对话框

Implementation

static Future<T?> showDialog<T>({
  Widget? title,
  Widget? content,
  Widget? cancel,
  Widget? confirm,
  EdgeInsets? titlePadding,
  EdgeInsets? contentPadding,
  EdgeInsets? actionPadding,
  VoidCallback? onConfirm,
  VoidCallback? onCancel,
  bool showCancel = true,
  List<Widget>? actions,
  Widget? foot,
  bool showClose = false,
  bool barrierDismissible = false,
  TextDirection? actionTextDirection,
  double actionSpacing = _defaultActionSpacing,
}) async {
  final context = ComContext.context;
  final themeData = Theme.of(context);
  final dialogTheme = themeData.dialogTheme;

  return await material.showDialog(
    context: context,
    barrierDismissible: barrierDismissible,
    builder: (context) => PopScope(
      canPop: barrierDismissible,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Dialog(
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.all(
                Radius.circular(context.comTheme.shapes.resolvedDialogRadius),
              ),
            ),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                if (title != null) ...[
                  _buildDialogTitle(
                    context: context,
                    title: title,
                    titlePadding: titlePadding,
                    content: content,
                    dialogTheme: dialogTheme,
                    themeData: themeData,
                  ),
                ],
                if (content != null) ...[
                  _buildDialogContent(
                    context: context,
                    content: content,
                    contentPadding: contentPadding ??
                        EdgeInsets.fromLTRB(24, title == null ? 36 : 16, 24,
                            title == null ? 28 : 24),
                    dialogTheme: dialogTheme,
                    themeData: themeData,
                  ),
                ],
                _buildDialogFooter(
                  context: context,
                  cancel: cancel,
                  confirm: confirm,
                  onConfirm: onConfirm,
                  onCancel: onCancel,
                  showCancel: showCancel,
                  actions: actions,
                  actionPadding: actionPadding,
                  actionTextDirection: actionTextDirection,
                  actionSpacing: actionSpacing,
                ),
              ],
            ),
          ),
          if (showClose) ...[
            _buildCloseButton(context: context, foot: foot),
          ],
        ],
      ),
    ),
  );
}