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



点击TextField可以使其聚焦并弹出键盘。在用户输入TextField之前,我需要向用户显示一个带有选项的对话框。

我可以这样做,但它很难看:首先TextField获得焦点,键盘出现,然后对话框弹出,键盘消失(因为TextField失去焦点(。然后焦点返回到点击的TextField,键盘返回。

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

有没有办法让对话框先出现(键盘不显示(,然后选择后焦点转到点击的TextField?

您可以使用一个简单的技巧。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);

在作用域模型/上下文提供程序中存储focusNodes的映射

检查映射是否应该打开特定焦点节点上的对话框。

相关内容

  • 没有找到相关文章

最新更新