Почему мой курсор текстового поля отображается в начальной позиции существующего текста при перефокусировке

Почему курсор появляется в начале существующего текста, а не в позиции, где пользователь нажимает, когда я повторно редактирую свое текстовое поле. Это происходит, когда вы расфокусируете текстовое поле, а затем снова сфокусируете его.

Пример кода:

      class Mypage extends StatelessWidget {
  const Mypage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextField(
              controller: TextEditingController()..text = 'Existing Text Here',
            ),
            TextButton(
                onPressed: () {
                  FocusScope.of(context).unfocus();
                },
                child: Text('Unfocus'))
          ],
        ),
      ),
    );
  }
}

1 ответ

По умолчанию используется TextEditingController без установки selectionсвойство, будет в первом символе / текстовом значении. Вы можете попробовать что-то вроде этого:

String textValue = 'Existing Text Here';

      TextField(
  controller: TextEditingController()..value = TextEditingValue(
  text: textValue,
  selection: TextSelection.fromPosition(
  TextPosition(offset: textValue.length))
    )
  ),
Другие вопросы по тегам