dart - 表单被键盘向上推以及如何删除下拉箭头
问题描述
我正在尝试开发一个输入表单,目前页面看起来像这样,这非常好:
但是,有几件事我不知道如何完成:
- 如何删除下拉箭头图标?
- 当用户点击 TextField 输入日期时,键盘会打开并粉碎所有 UI,如下图所示。
- 有没有办法拦截 TextField 上的点击操作,以便我可以阻止键盘打开,而是显示 DatePicker?(因此用户将看到 TextField,但无法手动编辑它。)当用户点击 TextField 旁边的图标时,我已经打开了 DatePicker。
这个页面的代码很长,所以这里是GitHub 上的完整代码。
解决方案
1.和2.是直截了当的答案:
您可以iconSize
在DropdownButton
小部件中指定 为0.0
,这有效地删除了图标:
DropdownButton(
iconSize: 0.0,
...
)
由于您的BoxDecoration
,您将需要添加一个Padding
到您的Text
小部件:
DropdownMenuItem<Project>(
value: value,
child: Padding(
padding: EdgeInsets.only(right: 20.0),
child: Text(value.name, style: TextStyle(fontSize: 25.0))));
您可能希望padding
根据需要调整该值。
为避免软键盘向上推您的内容,您可以指定resizeToAvoidBottomPadding
在false
您的 中Scaffold
,它应该在您的小部件树的顶部:
Scaffold(
resizeToAvoidBottomPadding: false,
...
)
对于3.我认为你不应该使用 a TextField
,而应该使用 aText
和 a GestureDetector
or InkWell
(InkWell
授予一些材料突出显示飞溅效果),因为在这种情况下你不需要 a 的属性TextField
:
GestureDetector(
onTap: () {
// Your code to show the DatePicker and make use of it.
showDatePicker();
...
},
child: Text(dateText)
)
推荐阅读
- python - 如何将数据集 id 传递给 python 的 bigquery 客户端
- r - 使用重采样在 Tidymodels 中预先分配虚拟变量级别
- javascript - 为什么 IFrame 不会在单击容器 div 时加载?
- python - 查找 txt 文件中出现次数最多的电子邮件地址
- symfony - 防止 Doctrine 将 ArrayCollection 用于关系
- ios - 通过 indexpath 使用结构和数据制作 tableView 单元格
- c# - XML 文档 (1, 1) 中存在错误。当反序列化一个简单的 xml 字符串时
- mysql - 是否有一个 SQL 命令来计算不同列中值的频率?
- c# - 是否可以从 C# 中的 Microsoft Identity Manager 获取信息?
- python - 如何通过使用 python selenium 单击链接按钮来访问在新选项卡中打开的元素?