showNativeDialog<T> function
Future<T?>
showNativeDialog<T>(
- BuildContext context, {
- required String title,
- required List<
DialogAction< actions,T> > - required String content,
A native dialog which shows a CupertinoAlertDialog on iOS and a AlertDialog on Android.
Example:
showNativeDialog(
context,
title: 'Title',
content: 'Content',
actions: [
DialogAction(text: 'Action', onTap: () {}),
],
);
Implementation
Future<T?> showNativeDialog<T>(
BuildContext context, {
required String title,
required List<DialogAction<T>> actions,
required String content,
}) {
if (defaultTargetPlatform == TargetPlatform.iOS) {
return showCupertinoDialog<T>(
context: context,
builder:
(dialogContext) => CupertinoAlertDialog(
title: Text(title),
content: Text(content),
actions:
actions
.map(
(action) => CupertinoDialogAction(
onPressed: () async {
final result = await action.onTap();
if (dialogContext.mounted) Navigator.of(dialogContext).pop(result);
},
isDestructiveAction: action.isDestructiveAction,
child: Text(action.text, style: action.textStyle),
),
)
.toList(),
),
);
} else {
return showDialog<T?>(
context: context,
builder:
(dialogContext) => AlertDialog(
title: Text(title),
content: Text(content),
actions:
actions
.map(
(action) => TextButton(
onPressed: () async {
final result = await action.onTap();
if (dialogContext.mounted) Navigator.of(dialogContext).pop(result);
},
child: Text(action.text, style: action.textStyle),
),
)
.toList(),
),
);
}
}