Flutter中如何为日期选择器添加readonly属性?
解决方案
你遇到的问题大概率是拼写错误——Flutter的TextField组件对应的只读属性是**readOnly**(注意大写的O),而非全小写的readonly。以下是具体实现步骤:
正确实现只读输入框
在绑定spousedateOfBirthController的TextField中,添加readOnly: true属性,并在onTap回调中触发你的日期选择器方法,这样用户点击输入框会弹出选择器,同时无法手动输入内容:
TextField( controller: spousedateOfBirthController, // 核心:设置只读,注意参数名拼写 readOnly: true, // 点击输入框时触发日期选择器 onTap: () => SelectSpouseDOB(context), decoration: const InputDecoration( labelText: '配偶出生日期', border: OutlineInputBorder(), ), // 可选:保留日期格式的输入键盘样式 keyboardType: TextInputType.datetime, )
额外说明
- 如果设置
enabled: false也能禁止输入,但会让输入框样式变灰,交互体验不如readOnly友好; - 你的
SelectSpouseDOB方法无需修改,保持原有逻辑即可,选择日期后会自动更新输入框内容。
内容的提问来源于stack exchange,提问作者Samruddhi Chavan
相关产品推荐
相关产品推荐

