在TextField中进行敲击可使其聚焦并导致键盘弹出。在用户输入TextField之前,我需要向用户显示一个可以选择的对话框。
我可以做到,但是很丑陋:首先TextField获得焦点,键盘抬起,然后弹出对话框,键盘消失(因为TextField失去了焦点)。然后,焦点返回到轻按的TextField,键盘又回到上端。
我想避免所有的起伏,我无法添加任何额外的按钮来从其他地方调用对话框,然后点击TextField。
有没有一种方法可以使对话框首先出现(不显示键盘),然后 选择焦点,将焦点移到轻击的TextField?
答案 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);