【问题标题】:Bottom Overflow dateTimePicker Flutter底部溢出 dateTimePicker Flutter
【发布时间】: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


    【解决方案1】:

    在我的情况下,我寻找“_datePickerHeaderPortraiHeight”然后更改 date_picker.dart 中的值以解决我的问题。
    您可以尝试查找此行并更改static const double _datePickerHeaderPortraitHeight = 120.0;

    【讨论】:

      猜你喜欢
      • 2020-03-12
      • 2019-05-27
      • 2020-09-08
      • 2019-03-12
      • 2019-06-06
      • 1970-01-01
      • 2021-04-07
      • 2021-06-21
      • 2023-03-25
      相关资源
      最近更新 更多