如何通过按 TAB 更改 onSubscribed 发生

问题描述 投票:0回答:1

如何通过按 TAB 更改 onSubscribed 发生: 大家好,我是 flutter 的新开发者,我有一个问题。 在textField中,如何使**onSubscribed **函数在按下TAB而不是ENTER(这是默认值)时发生

我会因悔改而欢喜!!

flutter
1个回答
0
投票

您可以使用

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",
            ),
          ),
        ]),
      ),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.