showDeletePlanDialog function
Show delete plan dialog.
Implementation
Future<void> showDeletePlanDialog(BuildContext context, NmPlanController controller) async {
final plan = controller.selected;
if (plan == null) return;
final l10n = NmTelecom.l10n(context);
final impact = controller.inspectDelete(plan.id, l10n);
if (!impact.allowed) {
await showDialog<void>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.lock), const SizedBox(width: 8), Text(l10n.planDeleteUnavailableTitle)]),
content: Text(impact.message),
actions: [TextButton(onPressed: () => Navigator.pop(context), child: Text(l10n.planCloseButton))],
),
);
return;
}
final confirmed = await showDialog<bool>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.applicationBadgeMinus), const SizedBox(width: 8), Text(l10n.planDeleteConfirmTitle)]),
content: Text(impact.message),
actions: [
TextButton(onPressed: () => Navigator.pop(context, false), child: Text(l10n.planCancel)),
FilledButton(
style: FilledButton.styleFrom(backgroundColor: context.nm.colors.dangerText),
onPressed: () => Navigator.pop(context, true),
child: Text(l10n.planDeleteAction),
),
],
),
);
if (confirmed == true) controller.deletePlan(plan.id, l10n);
}