showInputDialog static method

void showInputDialog({
  1. required BuildContext context,
  2. required String title,
  3. String? hitText,
  4. dynamic onSubmit(
    1. TextEditingController
    )?,
  5. String? defaultValue,
  6. String? suffixText,
})

Shows a dialog which can accept input text

title title for the dialog

hitText caption for the edit field

onSubmit function called when the Submit button is pressed

defaultValue the default value to be set into the edit field

Implementation

static void showInputDialog({
  required final BuildContext context,
  required final String title,
  final String? hitText,
  final Function(TextEditingController)? onSubmit,
  final String? defaultValue,
  final String? suffixText,
}) {
  final TextEditingController controller =
      TextEditingController(text: defaultValue);

  ESMessage.customDialog(
    context: context,
    title: title,
    onSubmit: () {
      if (onSubmit != null) onSubmit(controller);
    },
    content: () {
      return Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          const SizedBox(height: 15),
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 5),
            child: TextField(
              decoration: InputDecoration(
                isDense: true,
                border: const OutlineInputBorder(
                    borderRadius: BorderRadius.all(Radius.circular(10))),
                filled: false,
                hintStyle: const TextStyle(color: Colors.grey),
                hintText: hitText ?? '',
                labelText: hitText ?? '',
                suffixText: suffixText,
                suffixIcon: () {
                  return InkWell(
                    child: const Icon(Icons.cancel),
                    onTap: () => controller.clear(),
                  );
                }(),
              ),
              autofocus: true,
              controller: controller,
            ),
          ),
        ],
      );
    }(),
  );
  // Make the field as selected by default
  controller.selection =
      TextSelection(baseOffset: 0, extentOffset: controller.text.length);
}