如何在 flutter 中不选择任何文本的情况下将焦点放在 TextField 上?

How can I give focus to a TextField without any text being selected in flutter?

提问人:F F 提问时间:10/23/2023 更新时间:10/23/2023 访问量:50

问:

当我对包含任何文本的 TextField 执行 requestFocus() 时,该文本将被选中。
我想要的是将光标放在末尾,而不选择任何文本。

如何在 flutter 中不选择任何文本的情况下将焦点放在 TextField 上?
图像

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

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

  final focusNode1 = FocusNode();
  final controller1 = TextEditingController()..text = '111';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Material(
        child: Column(
          children: [
            TextButton(
              onPressed: () {
                focusNode1.requestFocus();
              },
              child: Text("SetFocus"),
            ),
            TextField(
              focusNode: focusNode1,
              controller: controller1,
            ),
          ],
        ),
      ),
    );
  }
}

我可以通过以下代码实现绘制后光标到末尾。
但是,有一会儿,我可以看到正在选择的文本。

难道没有更好的方法吗?

                focusNode1.requestFocus();
                WidgetsBinding.instance.addPostFrameCallback((_) {
                  controller1.selection = TextSelection.collapsed(offset: controller1.text.length);
                });
Flutter Focus TextField TextSelection

评论

0赞 k.s poyraz 10/24/2023
你能分享你的 Flutter SDK 版本和测试设备吗?因为一切看起来都很好 iOS sumulator。一切都如你所愿
0赞 F F 10/25/2023
@k.spoyraz 感谢您的评论。SDK 版本为 Flutter 3.13.8 • 通道稳定。目标设备是 Web。

答: 暂无答案