inputDialog static method
Future<String?>
inputDialog(
{ - required String title,
- required String hint,
- dynamic onSubmit(
- String
)?,
- VoidCallback? onCancel,
- String defaultValue = "",
- String? submitText,
- String? cancelText,
- int lines = 4,
- TextInputType keyboardType = TextInputType.multiline,
- bool obscureText = false,
- String? validator(
- String?
)?,
})
Implementation
static Future<String?> inputDialog({
required String title,
required String hint,
Function(String)? onSubmit,
VoidCallback? onCancel,
String defaultValue = "",
String? submitText,
String? cancelText,
int lines = 4,
TextInputType keyboardType = TextInputType.multiline,
bool obscureText = false,
String? Function(String?)? validator,
}) async {
final TextEditingController controller = TextEditingController(text: defaultValue);
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
final String? text = await showDialog<String>(
context: navigatorKey.currentContext!,
builder: (BuildContext context) => AlertDialog.adaptive(
title: Text(title),
content: Material(
type: MaterialType.transparency,
child: Form(
key: formKey,
child: UTextField(
hintText: hint,
lines: lines,
controller: controller,
obscureText: obscureText,
keyboardType: keyboardType,
validator: validator,
contentPadding: const EdgeInsets.symmetric(vertical: 16, horizontal: 8),
),
),
),
actions: <Widget>[
TextButton(onPressed: onCancel ?? back, child: Text(cancelText ?? U.s.cancel)),
TextButton(
onPressed: () {
if (validator == null || (formKey.currentState?.validate() ?? true)) back(controller.text);
},
child: Text(submitText ?? U.s.submit),
),
],
),
);
controller.dispose();
if (text != null && onSubmit != null) {
onSubmit(text);
}
return text;
}