showMetadataDialog function

Future<void> showMetadataDialog(
  1. BuildContext context,
  2. NmCommandSetController controller
)

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();
}