show<T> static method
Future<T?>
show<T>({
- required BuildContext context,
- required Widget content,
- Widget? icon,
- Color? iconColor,
- EdgeInsetsGeometry? iconPadding,
- Widget? title,
- EdgeInsetsGeometry? titlePadding,
- TextStyle? titleTextStyle,
- EdgeInsetsGeometry? contentPadding,
- TextStyle? contentTextStyle,
- List<
Widget> ? actions, - EdgeInsetsGeometry? actionsPadding,
- MainAxisAlignment? actionsAlignment,
- OverflowBarAlignment? actionsOverflowAlignment,
- VerticalDirection? actionsOverflowDirection,
- double? actionsOverflowButtonSpacing,
- EdgeInsetsGeometry? buttonPadding,
- Color? backgroundColor,
- double? elevation,
- Color? shadowColor,
- Color? surfaceTintColor,
- String? semanticLabel,
- EdgeInsets insetPadding = const EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0),
- Clip clipBehavior = Clip.none,
- ShapeBorder? shape,
- AlignmentGeometry? alignment,
- bool scrollable = true,
- bool barrierDismissible = false,
- Color? barrierColor = Colors.black54,
- String? barrierLabel,
- bool useSafeArea = true,
- RouteSettings? routeSettings,
- Offset? anchorPoint,
- TraversalEdgeBehavior? traversalEdgeBehavior,
- double? width,
- double? height,
- Widget? cancel,
- Widget? confirm,
- bool? showConfirm = true,
- bool? showCancel = true,
- void onConfirm()?,
- void onCancel()?,
基础对话框
Implementation
static Future<T?> show<T>({
/// 上下文
required BuildContext context,
/// 内容组件
required Widget content,
/// 图标组件
Widget? icon,
/// 图标颜色
Color? iconColor,
/// 图标内边距
EdgeInsetsGeometry? iconPadding,
/// 标题组件
Widget? title,
/// 标题内边距
EdgeInsetsGeometry? titlePadding,
/// 标题文本样式
TextStyle? titleTextStyle,
/// 内容内边距
EdgeInsetsGeometry? contentPadding,
/// 内容文本样式
TextStyle? contentTextStyle,
/// 操作按钮组
List<Widget>? actions,
/// 操作按钮内边距
EdgeInsetsGeometry? actionsPadding,
/// 操作按钮对齐方式
MainAxisAlignment? actionsAlignment,
/// 操作按钮溢出对齐方式
OverflowBarAlignment? actionsOverflowAlignment,
/// 操作按钮溢出方向
VerticalDirection? actionsOverflowDirection,
/// 操作按钮溢出间距
double? actionsOverflowButtonSpacing,
/// 按钮内边距
EdgeInsetsGeometry? buttonPadding,
/// 背景色
Color? backgroundColor,
/// 阴影高度
double? elevation,
/// 阴影颜色
Color? shadowColor,
/// 表面色调
Color? surfaceTintColor,
/// 语义标签
String? semanticLabel,
/// 对话框边距
EdgeInsets insetPadding = const EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0),
/// 裁剪方式
Clip clipBehavior = Clip.none,
/// 形状
ShapeBorder? shape,
/// 对齐方式
AlignmentGeometry? alignment,
/// 是否可滚动
bool scrollable = true,
/// 点击遮罩是否关闭
bool barrierDismissible = false,
/// 遮罩颜色
Color? barrierColor = Colors.black54,
/// 遮罩标签
String? barrierLabel,
/// 是否使用安全区域
bool useSafeArea = true,
/// 是否使用根导航器
bool useRootNavigator = true,
/// 路由设置
RouteSettings? routeSettings,
/// 锚点位置
Offset? anchorPoint,
/// 遍历边缘行为
TraversalEdgeBehavior? traversalEdgeBehavior,
/// 宽度
double? width,
/// 高度
double? height,
/// 取消按钮
Widget? cancel,
/// 确认按钮
Widget? confirm,
/// 是否显示确认按钮
bool? showConfirm = true,
/// 是否显示取消按钮
bool? showCancel = true,
/// 确认回调
void Function()? onConfirm,
/// 取消回调
void Function()? onCancel,
}) {
ColorScheme colorScheme = Theme.of(context).colorScheme;
return showAdaptiveDialog<T>(
context: context,
barrierDismissible: barrierDismissible,
barrierColor: barrierColor,
barrierLabel: barrierLabel,
useSafeArea: useSafeArea,
useRootNavigator: useRootNavigator,
routeSettings: routeSettings,
anchorPoint: anchorPoint,
traversalEdgeBehavior: traversalEdgeBehavior,
builder: (context) => AlertDialog.adaptive(
icon: icon,
iconPadding: iconPadding ?? const EdgeInsets.fromLTRB(14, 16, 14, 16),
titlePadding: titlePadding ?? EdgeInsets.fromLTRB(14, icon == null ? 18 : 0, 14, 14),
contentPadding: contentPadding ?? const EdgeInsets.fromLTRB(14, 0, 14, 0),
actionsPadding: actionsPadding ?? const EdgeInsets.fromLTRB(14, 7, 14, 7),
title: title ?? Text('hint'.tr()),
content: SizedBox(
width: width,
height: height,
child: content,
),
actions: actions ??
<Widget>[
if (showCancel == true)
cancel ??
(UtilInternal.isApple
? CupertinoDialogAction(
onPressed: onCancel ?? () => RouterService.instance.pop(),
textStyle: TextStyle(color: colorScheme.outline),
child: Text('cancel'.tr()),
)
: TextButton(
style: ButtonStyle(
foregroundColor: WidgetStateProperty.all(colorScheme.outline),
),
onPressed: onCancel ?? () => RouterService.instance.pop(),
child: Text('cancel'.tr()),
)),
if (showConfirm == true)
confirm ??
(UtilInternal.isApple
? CupertinoDialogAction(
onPressed: onConfirm ?? () => RouterService.instance.pop(),
child: Text('confirm'.tr()),
)
: TextButton(
onPressed: onConfirm ?? () => RouterService.instance.pop(),
child: Text('confirm'.tr()),
)),
],
iconColor: iconColor,
titleTextStyle: titleTextStyle,
contentTextStyle: contentTextStyle ?? Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: 16),
actionsAlignment: actionsAlignment,
actionsOverflowAlignment: actionsOverflowAlignment,
actionsOverflowDirection: actionsOverflowDirection,
actionsOverflowButtonSpacing: actionsOverflowButtonSpacing,
buttonPadding: buttonPadding,
backgroundColor: backgroundColor,
elevation: elevation,
shadowColor: shadowColor,
surfaceTintColor: surfaceTintColor,
semanticLabel: semanticLabel,
insetPadding: insetPadding,
clipBehavior: clipBehavior,
shape: shape,
alignment: alignment,
scrollable: scrollable,
),
);
}