Flutter TextField Focus节点请求焦点选择文本

问题描述 投票:0回答:1

我有一个警报对话框,其顶部有一个文本字段和一个下拉按钮。我希望文本字段在选择下拉菜单中的选项后重新获得焦点。我为此使用了 2 个单独的 FocusNode,一个用于 TextField,另一个用于 DropDown Button。但是,不是将光标放置在文本字段中的文本末尾(就像用户点击它一样),而是选择了文本,我需要再次点击它才能看到光标。

出于某种原因,当我点击其他按钮的外部时,光标停留在文本的末尾,但是当我从下拉菜单中选择某些内容时,文本焦点会丢失。当我再次请求它时,它所做的只是选择所有内容。

它在这里工作: enter image description here

但不在这里:

But not here

这是我的代码的一部分:

class _BasicWindowState extends State<BasicWindow> {
  final TextEditingController textController = TextEditingController();
  FocusNode textFocus = FocusNode();
  FocusNode dropDownFocus = FocusNode();
TextField( focusNode: textFocus,
          onTapOutside: (event) => textFocus.requestFocus())

DropdownButton(
     focusNode: dropDownFocus,
     onChanged: (String? newList) {
        dropDownFocus.unfocus();
        textFocus.requestFocus();
        textController.selection =TextSelection.collapsed(offset: textController.text.length);}
               

我尝试添加 TextFieldTapRegion 但没有帮助。

flutter textfield
1个回答
0
投票

尝试将选择放入 Future.delayed 中,如下所示

Future.delayed(Duration(milliseconds: 100), () 
{ 
    textController.selection = TextSelection(baseOffset: 0, 
    extentOffset: textController.text.length, );
});
© www.soinside.com 2019 - 2024. All rights reserved.