showAlertForm static method

Future<String?> showAlertForm(
  1. String titleKey,
  2. String contentKey,
  3. String labelText,
  4. BuildContext context,
)

Muestra un formulario con un campo de texto para que el usuario ingrese información.

El parámetro titleKey se usa para localizar el título del diálogo. contentKey se usa para localizar el contenido del diálogo, y labelText es el texto que se muestra en la etiqueta del campo de texto. Si el campo no está vacío, el valor ingresado se retorna.

Implementation

static Future<String?> showAlertForm(String titleKey, String contentKey,
    String labelText, BuildContext context) async {
  final TextEditingController controller = TextEditingController();

  // MOSTRAR EL DIALOG
  return showDialog<String>(
    context: context,
    builder: (context) {
      return AlertDialog(
        title: Internationalization.internationalization
            .createLocalizedSemantics(
          context,
          '${titleKey}_label',
          '${titleKey}_hint',
          titleKey,
          const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
        ),
        content: Column(
          mainAxisSize: MainAxisSize.min, // AJUSTE DE TAMAÑO DEL CONTENIDO
          children: [
            Internationalization.internationalization
                .createLocalizedSemantics(
              context,
              '${contentKey}_label',
              '${contentKey}_hint',
              contentKey,
              const TextStyle(fontSize: 16),
            ),
            const SizedBox(height: 10),
            TextField(
              controller: controller,
              decoration: InputDecoration(
                labelText: Internationalization.internationalization
                    .getLocalizations(context, labelText),
                border: const OutlineInputBorder(),
              ),
            ),
          ],
        ),
        actions: [
          TextButton(
            onPressed: () {
              String newCubeName = controller.text.trim();
              if (newCubeName.isNotEmpty) {
                Navigator.of(context).pop(newCubeName); // RETORNA EL NOMBRE
              } else {
                Navigator.of(context).pop(); // SE ESTA VACIO, NO RETORNA NADA
              }
            },
            child: Internationalization.internationalization
                .createLocalizedSemantics(
              context,
              'accept_label',
              'accept_hint',
              'accept_label',
              const TextStyle(fontSize: 16, color: Colors.blue),
            ),
          ),
        ],
      );
    },
  );
}