Datepicker 颤振问题

Issue in Datepicker flutter

当我单击文本字段和 select 出生日期时,它显示 我的标签文字。

我不想在 select 编辑日期后显示我的标签文本。此外,键盘出现在我之前和之后 select日期。

如何禁用出现的键盘并删除 在我的文本字段中显示时间?我只需要一个日期来显示 after the selection.

 DateTime _date = DateTime.now();
    
      Future<Null> _selectDate(BuildContext) async {
        DateTime? _datePicker = await showDatePicker(
            context: context,
            initialDate: _date,
            firstDate: DateTime(1947),
            lastDate: DateTime(2023),
            initialDatePickerMode: DatePickerMode.year
            );
        if (_datePicker != null && _datePicker != _date) {
          setState(() {
            _date = _datePicker;
            print(
              _date.toString(),
            );
          });
        }
      }

    TextFormField(
                      onTap: (){
                        setState(() {
                          _selectDate(context);
                        });
                      },
                      decoration: InputDecoration(hintText: (_date.toString()),
                        hintStyle: TextStyle(color:buttontext, fontSize: 14),
                        enabledBorder: UnderlineInputBorder(
                          borderSide: BorderSide(color: buttonblue),
                        ),
                        focusedBorder: UnderlineInputBorder(
                          borderSide: BorderSide(color: buttonblue),
                        ),
                        labelText: "Select Date of Birth",
                        labelStyle: TextStyle(fontSize: 15, color: buttontext),
                      ),
                      style: TextStyle(color: buttontext),
                    ),

使用DateFormat()

var myFormat = DateFormat('yyyy-MM-dd');//define format here




    Future<Null> _selectDate(BuildContext) async {
            DateTime? _datePicker = await showDatePicker(
                context: context,
                initialDate: _date,
                firstDate: DateTime(1947),
                lastDate: DateTime(2023),
                initialDatePickerMode: DatePickerMode.year
                );
            if (_datePicker != null && _datePicker != _date) {
var fomatDate=myFormat.format(_datePicker);

              setState(() {
                _date = fomatDate;
                print(
                  _date.toString(),
                );

              });
            }
          }

试试下面的代码,希望对你有帮助。为日期格式添加 intl package

声明变量:

  DateTime? selectedDate;
  DateTime _date = DateTime.now();
  var dob;

您的日期选择器:

datePicker() async {
    selectedDate = await showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(2000),
      lastDate: DateTime(2100),
      helpText: 'Campaign Date Picker'.toUpperCase(),
    );
    if (selectedDate != null && selectedDate != _date) {
      setState(() {
        _date = selectedDate!;
        dob = DateFormat('dd-MM-yyyy')
            .format(_date); //change date format on your need
        print(
          dob.toString(),
        );
      });
    }
  }

您的小部件:

TextFormField(
      onTap: () {
        setState(() {
          datePicker();
        });
      },
      decoration: InputDecoration(
        hintText: (dob.toString()),
        border: OutlineInputBorder(),
        labelText: "Select Date of Birth",
        floatingLabelBehavior: FloatingLabelBehavior.never,
      ),
    ),

你的成绩->