我有一个警报对话框,其顶部有一个文本字段和一个下拉按钮。我希望文本字段在选择下拉菜单中的选项后重新获得焦点。我为此使用了 2 个单独的 FocusNode,一个用于 TextField,另一个用于 DropDown Button。但是,不是将光标放置在文本字段中的文本末尾(就像用户点击它一样),而是选择了文本,我需要再次点击它才能看到光标。
出于某种原因,当我点击其他按钮的外部时,光标停留在文本的末尾,但是当我从下拉菜单中选择某些内容时,文本焦点会丢失。当我再次请求它时,它所做的只是选择所有内容。
但不在这里:
这是我的代码的一部分:
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 但没有帮助。
尝试将选择放入 Future.delayed 中,如下所示
Future.delayed(Duration(milliseconds: 100), ()
{
textController.selection = TextSelection(baseOffset: 0,
extentOffset: textController.text.length, );
});