Flutter:将焦点放在刚刚添加的 TextField 上

Flutter: give focus to just added TextField

我需要关注刚刚创建的 TextField。

示例代码在这里:https://dartpad.dev/?id=1c84c70d956efde95fa12820c9afa4aa

class _TestPageState extends State<TestPage> {
  List<TextEditingController> controllers = [
    TextEditingController(text: 'field 0')
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ListView.builder(
            itemCount: controllers.length,
            itemBuilder: (context, index) => TextField(
                controller: controllers[index],
                autofocus: index == controllers.length - 1)),
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.add),
        onPressed: () {
          setState(() {
            controllers.add(
                TextEditingController(text: 'field ${controllers.length}'));
          });
        },
      ),
    );
  }
}

在 dartpad 中运行良好,但在真实设备上运行不正常。

有什么建议说明它为什么不能在设备上运行以及如何实现吗? 谢谢

这样的话,你也可以创建List<FocusNode> _focusNodes = [];,(根据列表添加一个FocusNode)。

然后在最后一个焦点节点上添加和请求焦点。

 onPressed: () {
          setState(() {
            controllers.add(
                TextEditingController(text: 'field ${controllers.length}'));
            _focusNodes.add(FocusNode());
          });
          _focusNodes.last.requestFocus();
        },