showEditZoneMetadataDialog function
Show edit zone metadata dialog.
Implementation
Future<void> showEditZoneMetadataDialog(BuildContext context, NmZoneController controller) async {
final zone = controller.selected;
if (zone == null) return;
final l10n = NmTelecom.l10n(context);
final name = TextEditingController(text: zone.name);
final region = TextEditingController(text: zone.region ?? '');
final billingCode = TextEditingController(text: zone.billingCode ?? '');
await showDialog<void>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.applicationBadgePencil), const SizedBox(width: 8), Text(l10n.zoneMetaDialogTitle)]),
content: SizedBox(
width: 420,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
_field(name, l10n.zoneFieldName, required: true),
const SizedBox(height: 10),
_field(region, l10n.zoneFieldRegionOptional),
const SizedBox(height: 10),
_field(billingCode, l10n.zoneBillingCodeFieldLabel),
],
),
),
actions: [
TextButton(onPressed: () => Navigator.pop(context), child: Text(l10n.zoneCancel)),
FilledButton(
onPressed: () {
controller.renameZone(
zone.id,
name.text.trim(),
region.text.trim().isEmpty ? null : region.text.trim(),
billingCode.text.trim().isEmpty ? null : billingCode.text.trim().toUpperCase(),
l10n,
);
Navigator.pop(context);
},
child: Text(l10n.zoneApply),
),
],
),
);
name.dispose();
region.dispose();
billingCode.dispose();
}