input method
Future<String?>
input({
- BuildContext? context,
- Widget? title,
- Widget? icon,
- bool obscureText = false,
- bool autofocus = false,
- TextInputType? keyboardType,
- InputDecoration decoration = const InputDecoration(),
- TextEditingController? controller,
Implementation
Future<String?> input({
BuildContext? context,
Widget? title,
Widget? icon,
bool obscureText = false,
bool autofocus = false,
TextInputType? keyboardType,
InputDecoration decoration = const InputDecoration(),
TextEditingController? controller,
}) async {
var ctrl = controller ?? TextEditingController();
var nav = navigator(context);
return await withChild(
AlertDialog(
icon: icon,
title: title,
content: Padding(
padding: const EdgeInsets.all(8),
child: TextField(
obscureText: obscureText,
decoration: decoration,
autofocus: autofocus,
controller: ctrl,
keyboardType: keyboardType,
onSubmitted: (value) => nav.pop(value),
),
),
actions: [
TextButton(
onPressed: () {
var text = ctrl.text;
if (text.isEmpty) {
nav.pop(null);
} else {
nav.pop(text);
}
ctrl.dispose();
},
child: Text(MaterialLocalizations.of(context ?? this.context!)
.okButtonLabel))
],
),
).prompt(context: context);
}