inputDialog static method
Future<String?>
inputDialog({
- required BuildContext context,
- required String title,
- String? defaultValue,
- String okButtonName = 'OK',
- String hintText = 'Type here',
- FormFieldValidator<
String> ? validator,
Shows an input dialog for text entry.
Parameters:
context: The build contexttitle: Dialog title textdefaultValue: Optional default value for the text fieldokButtonName: OK button label. Defaults to 'OK'hintText: Text field hint. Defaults to 'Type here'validator: Optional form field validator
Returns a Future that completes with the entered text or null if canceled.
Implementation
static Future<String?> inputDialog(
{required BuildContext context,
required String title,
String? defaultValue,
String okButtonName = 'OK',
String hintText = 'Type here',
FormFieldValidator<String>? validator}) {
TextEditingController controller = TextEditingController();
GlobalKey<FormState> formKey = GlobalKey();
if (defaultValue.hasValue) {
controller.text = defaultValue!;
}
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text(title),
content: Form(
key: formKey,
child: TextFormField(
controller: controller,
validator: validator,
decoration: InputDecoration(
icon: const Icon(Icons.edit_note), hintText: hintText),
),
),
actions: [
TextButton(
onPressed: () {
if (!formKey.currentState!.validate()) {
return;
}
context.navigator.pop(controller.text);
},
child: Text(okButtonName)),
TextButton(
onPressed: () => context.navigator.pop(),
child: const Text('Cancel'))
]);
});
}