Flutter: сфокусируйте внимание на только что добавленном текстовом поле

#flutter #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 это работает нормально, но не на реальном устройстве.

Есть какие-нибудь предложения, почему это не работает на устройстве и как этого добиться? Спасибо.

Ответ №1:

В этом случае вы также можете создать List<FocusNode> _focusNodes = []; (добавить FocusNode его на основе списка).

Затем добавьте и запросите фокус на последнем узле фокусировки.

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

Комментарии:

1. Спасибо. Уже сделал это до того, как вы ответили)