如何在Flutter中自动显示TextField的键盘

33
我在Flutter中有一个TextField,我想自动选择文本并显示键盘。虽然我可以通过TextEditingController选择文本,但即使使用FocusNodes的requestFocus方法,在小部件打开时也无法显示键盘。
如何让TextField自动打开键盘?
4个回答

42
您可以使用TextFieldautofocus:true属性:

如果没有其他东西拥有键盘焦点,那么这个文本字段是否应该自动聚焦。

因此,每当小部件出现在屏幕上时,如果没有其他内容具有键盘焦点,则焦点将自动定向到它,从而打开键盘。

TextField(TextEditingController: controller, 
         focusNode: focusNode,
         autofocus:true)

16
您可以将TextField的autofocus属性设置为true:
TextField(
  autofocus: true,
);

希望这可以帮到你!


1
谢谢您的回答。 - AMMAR ELHAMDO

8
class yourWidget extends StatelessWidget {  
FocusNode inputNode = FocusNode();
// to open keyboard call this function;
void openKeyboard(){
FocusScope.of(context).requestFocus(inputNode)
}

@override
Widget build(BuildContext context) {
  TextFormField(
   //assign the  node like this
   focusNode: inputNode,
   autofocus:true,)


}

1
虽然这段代码可能解决了问题,但包括说明它是如何解决问题的会帮助提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在回答未来的读者问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加说明,并指出适用的限制和假设。 - Adrian Mole

1

我只是用以下代码完成了这个:

autofocus: true,

但如果你想更好地控制 TextField / TextFormFeild 键盘,你可以这样使用:

1. 首先声明一个焦点节点对象:

FocusNode focusNode = FocusNode();  // declear a focusNode object

2. 在 TextFeild / TextFormFeild 上,只需按照以下方式操作:

    focusNode: focusNode,   // assign focusNode object on focusNode value
    autofocus: true,       // make autofocus true for first auto open keyboard

3. 当您想要打开键盘时,只需调用此函数:

   void openKeyboard () {
       FocusScope.of(context).requestFocus(inputNode); 
    }

这是一个使用示例。使用该格式,您可以自动打开键盘/完全控制是否需要打开键盘。

希望这能解决您的问题。


请求焦点在理论上应该起作用,但对我来说却没有起作用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接