#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. Спасибо. Уже сделал это до того, как вы ответили)