showPlatformAlertDialog<T> function
Future<T?>
showPlatformAlertDialog<T>({
- required BuildContext context,
- PlatformDialogData? platformDialogData,
- MaterialDialogData? materialDialogData,
- PlatformDialogData? cupertinoDialogData,
- MaterialAlertDialogData? materialAlertDialogData,
- CupertinoAlertDialogData? cupertinoAlertDialogData,
- Widget? title,
- Widget? content,
- List<
Widget> ? actions, - Key? key,
Shows a platform-adaptive alert dialog that renders Material AlertDialog on Android and CupertinoAlertDialog on iOS.
This function automatically selects the appropriate alert dialog implementation based on the target platform:
- On Android: shows a Material Design AlertDialog
- On iOS: shows a CupertinoAlertDialog
The alert dialog can be configured with platform-specific data through materialAlertDialogData
and cupertinoAlertDialogData, or with common properties.
Example:
showPlatformAlertDialog(
context: context,
title: Text('Confirm'),
content: Text('Are you sure you want to continue?'),
actions: [
PlatformDialogAction(
child: Text('Cancel'),
onPressed: () => Navigator.pop(context),
),
PlatformDialogAction(
child: Text('OK'),
onPressed: () => Navigator.pop(context),
),
],
)
Implementation
Future<T?> showPlatformAlertDialog<T>({
required BuildContext context,
PlatformDialogData? platformDialogData,
MaterialDialogData? materialDialogData,
PlatformDialogData? cupertinoDialogData,
MaterialAlertDialogData? materialAlertDialogData,
CupertinoAlertDialogData? cupertinoAlertDialogData,
Widget? title,
Widget? content,
List<Widget>? actions,
Key? key,
}) => _showBasePlatformDialog<T>(
context: context,
materialBuilder: (context) => AlertDialog(
key: materialAlertDialogData?.widgetKey ?? key,
title: materialAlertDialogData?.title ?? title,
content: materialAlertDialogData?.content ?? content,
actions: materialAlertDialogData?.actions ?? actions,
icon: materialAlertDialogData?.icon,
iconPadding: materialAlertDialogData?.iconPadding,
iconColor: materialAlertDialogData?.iconColor,
titlePadding: materialAlertDialogData?.titlePadding,
titleTextStyle: materialAlertDialogData?.titleTextStyle,
contentPadding: materialAlertDialogData?.contentPadding,
contentTextStyle: materialAlertDialogData?.contentTextStyle,
actionsPadding: materialAlertDialogData?.actionsPadding,
actionsAlignment: materialAlertDialogData?.actionsAlignment,
actionsOverflowAlignment: materialAlertDialogData?.actionsOverflowAlignment,
actionsOverflowDirection: materialAlertDialogData?.actionsOverflowDirection,
actionsOverflowButtonSpacing: materialAlertDialogData?.actionsOverflowButtonSpacing,
buttonPadding: materialAlertDialogData?.buttonPadding,
backgroundColor: materialAlertDialogData?.backgroundColor,
elevation: materialAlertDialogData?.elevation,
shadowColor: materialAlertDialogData?.shadowColor,
surfaceTintColor: materialAlertDialogData?.surfaceTintColor,
semanticLabel: materialAlertDialogData?.semanticLabel,
insetPadding: materialAlertDialogData?.insetPadding,
clipBehavior: materialAlertDialogData?.clipBehavior,
shape: materialAlertDialogData?.shape,
alignment: materialAlertDialogData?.alignment,
constraints: materialAlertDialogData?.constraints,
scrollable: materialAlertDialogData?.scrollable ?? MaterialAlertDialogData.kDefaultScrollable,
),
cupertinoBuilder: (context) => CupertinoAlertDialog(
key: cupertinoAlertDialogData?.widgetKey ?? key,
title: cupertinoAlertDialogData?.title ?? title,
content: cupertinoAlertDialogData?.content ?? content,
actions:
cupertinoAlertDialogData?.actions ?? actions ?? CupertinoAlertDialogData.kDefaultActions,
scrollController: cupertinoAlertDialogData?.scrollController,
actionScrollController: cupertinoAlertDialogData?.actionScrollController,
insetAnimationDuration:
cupertinoAlertDialogData?.insetAnimationDuration ??
CupertinoAlertDialogData.kDefaultInsetAnimationDuration,
insetAnimationCurve:
cupertinoAlertDialogData?.insetAnimationCurve ??
CupertinoAlertDialogData.kDefaultInsetAnimationCurve,
),
platformDialogData: platformDialogData,
materialDialogData: materialDialogData,
cupertinoDialogData: cupertinoDialogData,
);