在键盘打开之前在TextField中点击打开对话框-Flutter

时间:2020-10-30 06:51:18

标签: flutter dialog keyboard textfield

在TextField中进行敲击可使其聚焦并导致键盘弹出。在用户输入TextField之前,我需要向用户显示一个可以选择的对话框。

我可以做到,但是很丑陋:首先TextField获得焦点,键盘抬起,然后弹出对话框,键盘消失(因为TextField失去了焦点)。然后,焦点返回到轻按的TextField,键盘又回到上端。

我想避免所有的起伏,我无法添加任何额外的按钮来从其他地方调用对话框,然后点击TextField。

有没有一种方法可以使对话框首先出现(不显示键盘),然后 选择焦点,将焦点移到轻击的TextField?

1 个答案:

答案 0 :(得分:0)

您可以遵循一个简单的技巧。 TextField有一个只读属性,您可以在该只读属性上使用一个标志。当用户从弹出菜单中选择一个选项时,则将焦点更改为该TextField。

bool readOnly = true;
FocusNode f1 = FocusNode();

TextFormField(                                
     read-only: readOnly ,
     focusNode: f1,
     decoration: InputDecoration(
     border: OutlineInputBorder(
     borderRadius: BorderRadius.circular(4.0)
      ),
      ),
     style: TextStyle(
      color: Colors.orange,
      fontSize: 15.0,
      ),
      ),
选择时,在对话框代码上

readOnly = false;
FocusScope.of(context).requestFocus(f1);