dialogText static method

Future<String> dialogText({
  1. required BuildContext context,
  2. required String title,
  3. required String message,
  4. String confirmLabel = 'OK',
  5. String cancelLabel = 'CANCELAR',
  6. String startString = '',
  7. TextInputType keyboardType = TextInputType.text,
  8. bool scrollable = false,
})

Implementation

static Future<String> dialogText({
  required BuildContext context,
  required String title,
  required String message,
  String confirmLabel = 'OK',
  String cancelLabel = 'CANCELAR',
  String startString = '',
  TextInputType keyboardType = TextInputType.text,
  bool scrollable = false,
}) async {
  TextEditingController controller = TextEditingController()
    ..text = startString;

  controller.selection = TextSelection(
    baseOffset: 0,
    extentOffset: controller.text.length,
  );

  String? value = await showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text(title),
        scrollable: scrollable,
        content: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.only(
                top: 16,
                left: 8,
                right: 8,
              ),
              child: SelectableText(
                message,
                style: const TextStyle(fontSize: 18),
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8),
              child: TextField(
                controller: controller,
                keyboardType: keyboardType,
                autofocus: true,
              ),
            ),
          ],
        ),
        actions: <Widget>[
          ElevatedButton(
            onPressed: () => Navigator.of(context).pop(),
            child: Text(cancelLabel),
          ),
          TextButton(
            onPressed: () => Navigator.of(context).pop(controller.text),
            child: Text(confirmLabel),
          ),
        ],
      );
    },
  );

  return value ?? '';
}