如何通过按 TAB 更改 onSubscribed 发生: 大家好,我是 flutter 的新开发者,我有一个问题。 在textField中,如何使**onSubscribed **函数在按下TAB而不是ENTER(这是默认值)时发生
我会因悔改而欢喜!!
您可以使用
FocusNode
检查文本字段是否处于焦点状态。如果它失去焦点并且 textField 值不为空,那么它将运行代码。
示例:
class TestPage extends StatefulWidget {
const TestPage({super.key});
@override
State<TestPage> createState() => _TestPageState();
}
class _TestPageState extends State<TestPage> {
final _focusNode = FocusNode();
final _textEditingController = TextEditingController();
void _onTab() {
if (!_focusNode.hasFocus && _textEditingController.text.isNotEmpty) {
print("Called OnSubmit");
}
}
@override
void initState() {
super.initState();
_focusNode.addListener(_onTab);
}
@override
void dispose() {
super.dispose();
_focusNode.removeListener(_onTab);
_focusNode.dispose();
_textEditingController.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
TextFormField(
focusNode: _focusNode,
style: const TextStyle(color: Colors.white),
controller: _textEditingController,
decoration: const InputDecoration(
hintText: "TEXT",
),
),
]),
),
);
}
}