" which also triggers the keyboard.)I have to click on the button (FloatingActionButton--> Popup-->Button) twice, to trigger this textmarker

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

最近几天,我尝试着实现我在stackoverflow上找到的修复方法,但都不成功。我想这是由不正常的故事情节造成的。

  • 我的屏幕上有一个Textfields
  • 点击FloatingActionButton后,会出现一个弹出窗口,用户可以点击以下按钮
  • 点击按钮时,我将一个bool设置为true(例如:textfield1 = true)。
  • 这将在我的屏幕上触发一个TextField ( if (textfield1== true) {TextField()}这一切都很好,问题是,我想改变这个新TextField的焦点。

所以我加了这个:

textfield1=true; _focusTextField1();

void _focusTextField1() { FocusScope.of(context).requestFocus(textfield1Node);}

现在TextField有了焦点(边框变成蓝色),但文本标记没有出现(我希望文本标记是正确的词,我指的是这个 "键盘"。比我发现这个解决方案。

   void initState() {
super.initState();
  WidgetsBinding.instance.addPostFrameCallback((_) => _focusTextField1());

这也不行 下一个问题是,我必须实现这个功能 addPostFrameCallback 用户可以创建的每一个可能的新TextField,但在描述中的 addPostFrameCallback 它说,只有最后一个回调才会被触发,意思是。每当我创建一个新的TextField时,在may initState()中最后一个回调的TextField将被关注。

谢谢大家的帮助!(我提供了所有相关的代码,我想如果我提供所有的代码会很混乱)。

flutter flutter-layout textfield
1个回答
0
投票

我想你需要的是FocusNode。

https:/flutter.devdocscookbookformsfocus)。

U可以创建。

  FocusNode myFocusNode;

  @override
  void initState() {
    super.initState();

    myFocusNode = FocusNode();
  }

并将其添加到你的TextField中。

  TextField(
    focusNode: myFocusNode,
  ),

所以,当你需要请求聚焦时,调用: myFocusNode.requestFocus()

© www.soinside.com 2019 - 2024. All rights reserved.