I'm trying to unfocus a textfield using a gesture recognizer wrapping my scaffold but whenever my textfield loses focus and the keyboard closes, it doesn't trigger the onSubmitted action on my textfield.
Is there a way to whenever it loses focus it also triggers my onSubmitted: method on the textField?
Here's my code:
final TextEditingController _txtController = TextEditingController();
final FocusNode _focusNode = FocusNode();
@override
Widget build(BuildContext context) {
var query = context.watch<QueryMakerModel>();
return GestureDetector(
onTap: () {
// FocusManager.instance.primaryFocus?.unfocus();
// FocusScope.of(context).unfocus();
_focusNode.unfocus();
},
child: Scaffold(
appBar: AppBar(title: const Center(child: Text("Contador de Prazo"))),
body: ListView(
children: [
_countySelector(context, query.getCounty()?.name),
const DateInputControl(),
_daysInputControl(query.numberOfDays(), onChange: (value) {
query.setDays(value);
}),
const ResultView()
],
)),
);
}
This is my Widget containing the textfield
Widget _daysInputControl(int currentDays, {Function(int)? onChange}) {
_txtController.text = '$currentDays';
return Container(
padding: const EdgeInsets.all(50.0),
child: Column(
children: [
const Text("Quantos dias uteis?"),
TextField(
focusNode: _focusNode,
keyboardType: TextInputType.number,
controller: _txtController,
textAlign: TextAlign.center,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
obscureText: false,
onSubmitted: (value) {
debugPrint(value);
if (onChange != null) {
try {
onChange(int.parse(value));
} catch (e) {
onChange(0);
}
}
},
decoration: const InputDecoration(
border: OutlineInputBorder(), labelText: 'Dias'),
)
],
));
}