showAlertForm static method
- String titleKey,
- String contentKey,
- String labelText,
- 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),
),
),
],
);
},
);
}