【发布时间】:2022-07-19 16:32:41
【问题描述】:
好的。所以我创建了一个 TextField,用户需要在其中选择出生日期。一切正常。用户单击该字段 > 日历显示 > 用户选择日期并完成。
但是,如果用户在打开日历后单击“编辑日期”,就会出现问题。虽然有足够的空间,但我仍然收到底部溢出错误。
当单击图 1 中突出显示的按钮时会发生这种情况:
这就是代码的样子:
Container(
margin: EdgeInsets.only(
top: DimensionConstants.margin8,
left: DimensionConstants.margin16,
right: DimensionConstants.margin16),
child: TextField(
controller:
_dobController,
decoration: InputDecoration(
enabledBorder: new OutlineInputBorder(
gapPadding: 0,
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
borderSide: new BorderSide(
color: Colors.transparent,
width: 1.0,
),
),
contentPadding: EdgeInsets.symmetric(
vertical: 0,
horizontal: DimensionConstants.margin16),
suffixIcon: Icon(
Icons.calendar_today_outlined,
size: 20.0,
color: HexColor(ColorConstants.blue),
),
errorBorder: OutlineInputBorder(
gapPadding: 0,
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
borderSide: new BorderSide(
color: Colors.red,
width: 1.0,
),
),
focusedBorder: OutlineInputBorder(
gapPadding: 0,
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
borderSide: new BorderSide(
color: Colors.transparent,
width: 1.0,
),
),
focusedErrorBorder: OutlineInputBorder(
gapPadding: 0,
BorderSide(color: Colors.black),
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
borderSide: new BorderSide(
color: Colors.transparent,
width: 1.0,
),
),
filled: true,
fillColor: HexColor(
ColorConstants.whiteSmoke),
floatingLabelBehavior: FloatingLabelBehavior.never),
readOnly:
true,
onTap: () async {
DateTime age16plusDate = DateTime(
DateTime.now().year - 16,
DateTime.now().month,
DateTime.now().day);
DateTime pickedDate = await showDatePicker(
builder: (BuildContext context, Widget child) {
return Theme(
data: ThemeData.light().copyWith(
primaryColor: Colors.black,
accentColor: const Color(0xFF000000),
colorScheme: ColorScheme.light(
primary: const Color(0xFF000000)),
),
child: child,
);
},
context: context,
initialDate: age16plusDate,
firstDate: DateTime(1947),
lastDate: age16plusDate,
fieldLabelText: 'Date of Birth',
fieldHintText: 'MONTH/DATE/YEAR',
initialDatePickerMode: DatePickerMode.day);
if (pickedDate != null) {
print(
pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate =
DateFormat('dd-MM-yyyy').format(pickedDate);
setState(() {
_dobController.text =
formattedDate; //set output date to TextField value.
});
} else {
print("Date is not selected");
}
},
),
),
知道我做错了什么吗?提前谢谢!
【问题讨论】:
标签: flutter flutter-layout textfield