inputDialog static method

Future<String?> inputDialog({
  1. required BuildContext context,
  2. required String title,
  3. String? defaultValue,
  4. String okButtonName = 'OK',
  5. String hintText = 'Type here',
  6. FormFieldValidator<String>? validator,
})

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'))
        ]
      );
    }
  );

}