我有一个用于Web的小型Flutter应用,正在显示TextField。
无论用户何时离开TextField(失去焦点)或按Enter键,我现在都需要像onSubmitted这样的回调。现在,我根本无法进行任何回调。
TextField(
decoration: InputDecoration(
labelText: 'Name',
),
controller: TextEditingController(text: event.name),
onEditingComplete: () { print("editing complete"); },
onSubmitted: (String value) { print("submitted\n"); },
maxLines: 1,
),
答案 0 :(得分:0)
这似乎是一个问题: [web]: TextField onSubmitted is not triggered when pressing enter
这是链接中提到的解决方法:
body: RawKeyboardListener(
focusNode: focusNode,
onKey: (event) {
if (event is RawKeyUpEvent && event.data is RawKeyEventDataAndroid) {
var data = event.data as RawKeyEventDataAndroid;
if (data.keyCode == 13) {
debugPrint('onSubmitted');
}
}
},
child: TextField(),
),
答案 1 :(得分:0)
同时删除 maxLines: 1
似乎可以让 onsubmitted 工作。[在移动设备上遇到同样的问题]
答案 2 :(得分:0)
您可以尝试创建一个方法,在您的 TextEditingController 上创建一个条件,并根据该条件在您的 TextField 上提交。
final entredTitle = titleController.text;
final entredAmount = double.parse(amountController.text);
if (entredTitle.isEmpty || entredAmount <= 0 ){
return ;
}
widget.addTx(entredTitle,entredAmount);
Navigator.of(context).pop();
}
TextField(
decoration: InputDecoration(labelText: 'Amount'),
controller: amountController,
onSubmitted: (_) => submitData(),
),