showActionSheet function
Future<void>
showActionSheet({
- required BuildContext context,
- required List<
ActionSheetItem> items,
Shows an action sheet.
Implementation
Future<void> showActionSheet({
required BuildContext context,
required List<ActionSheetItem> items,
}) {
if (context.isIOS) {
return showCupertinoModalPopup(
context: context,
builder: (context) => CupertinoTheme(
data: CupertinoThemeData(
brightness: Theme.of(context).brightness,
),
child: CupertinoActionSheet(
actions: items
.map(
(item) => CupertinoActionSheetAction(
onPressed: () {
if (item.onPressed == null) {
return;
}
Navigator.pop(context);
item.onPressed!();
},
isDestructiveAction: item.isDestructive,
child: Text(item.title),
),
)
.toList(),
cancelButton: CupertinoActionSheetAction(
onPressed: Navigator.of(context).pop,
child: Text(PackageLocalizations.of(context).cancel),
),
),
),
);
}
return showModalBottomSheet(
context: context,
useRootNavigator: true,
builder: (context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
...items.map(
(item) => adaptive.ListTile(
leading: item.icon != null ? Icon(item.icon) : null,
title: Text(
item.title,
style: TextStyle(
color: item.isDestructive ? Colors.red : null,
),
),
onTap: item.onPressed != null
? () {
Navigator.pop(context);
item.onPressed!();
}
: null,
),
),
const Divider(),
adaptive.ListTile(
leading: const Icon(Icons.cancel),
title: Text(PackageLocalizations.of(context).cancel),
onTap: Navigator.of(context).pop,
),
],
);
},
);
}