requestZoneSelection function

Future<void> requestZoneSelection(
  1. BuildContext context,
  2. NmZoneController controller,
  3. String id
)

Unsaved-changes switch guard, mirrors command_sets/registry_pane.dart's requestSetSelection.

Implementation

Future<void> requestZoneSelection(BuildContext context, NmZoneController controller, String id) async {
  if (controller.requestSelectZone(id)) return;
  final l10n = NmTelecom.l10n(context);
  final discard = await showDialog<bool>(
    context: context,
    builder: (_) => AlertDialog(
      title: Text(NmL10n.of(context).stateUnsaved),
      content: Text(l10n.zoneUnsavedBody),
      actions: [
        TextButton(onPressed: () => Navigator.pop(context, false), child: Text(l10n.zoneKeepEditing)),
        TextButton(onPressed: () => Navigator.pop(context, true), child: Text(l10n.zoneDiscardChanges)),
      ],
    ),
  );
  if (discard == true) {
    controller.discardAndContinue();
  } else {
    controller.keepEditing();
  }
}