showMetadataDialog function
Show metadata dialog.
Implementation
Future<void> showMetadataDialog(BuildContext context, NmCommandSetController controller) async {
final set = controller.selected;
if (set == null || set.isSystem) return;
final l10n = NmTelecom.l10n(context);
final name = TextEditingController(text: set.name);
final operator = TextEditingController(text: set.operatorName);
final code = TextEditingController(text: set.countryCode);
final country = TextEditingController(text: set.countryName);
final region = TextEditingController(text: set.region ?? '');
await showDialog<void>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.applicationBadgePencil), const SizedBox(width: 8), Text(l10n.cmdSetMetaDialogTitle)]),
content: SizedBox(
width: 460,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
_field(name, l10n.cmdSetFieldName),
const SizedBox(height: 10),
_field(operator, l10n.cmdSetFieldOperator),
const SizedBox(height: 10),
Row(
children: [
Expanded(flex: 2, child: _field(code, l10n.cmdSetFieldCountryCode)),
const SizedBox(width: 10),
Expanded(flex: 5, child: _field(country, l10n.cmdSetFieldCountry)),
],
),
const SizedBox(height: 10),
_field(region, l10n.cmdSetFieldRegionOptional),
],
),
),
actions: [
TextButton(onPressed: () => Navigator.pop(context), child: Text(l10n.cmdSetCancel)),
FilledButton(
onPressed: () {
controller.updateMetadata(
name: name.text,
operatorName: operator.text,
countryCode: code.text.trim().toUpperCase(),
countryName: country.text,
region: region.text.trim().isEmpty ? null : region.text.trim(),
);
Navigator.pop(context);
},
child: Text(l10n.cmdSetApply),
),
],
),
);
name.dispose();
operator.dispose();
code.dispose();
country.dispose();
region.dispose();
}