日期选择器颤振中的问题

发布于 2025-01-17 08:36:26 字数 1800 浏览 0 评论 0原文

当我单击文本字段并选择出生日期时,它会显示 我的标签文本。

我不想在选择日期后显示标签文本。另外,键盘出现在我之前和之后 选择日期。

如何禁用出现的键盘并删除 在我的文本字段中显示时间?我只需要在选择之后显示一个日期。

屏幕截图

 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),
                    ),

When I click the Textfield and select the date of birth, it displays with
my label text.

I don't want to display my label text after the date has been selected. Also, the keyboard is appearing before and after I
select the date.

How can I disable the appearing keyboard and remove the
display time in my Textfield? I only need a date to display after the selection.

Screenshot

 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),
                    ),

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉生梦死 2025-01-24 08:36:26

尝试以下代码,希望对您有所帮助。添加 intl package 用于构建

声明变量 的日期:

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

您的datepicker:

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,
      ),
    ),

您的结果 - &gt;

Try below code, hope its help to you. add intl package for date formating

Declare variable:

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

your datePicker:

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(),
        );
      });
    }
  }

Your Widget:

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

Your result-> image

南冥有猫 2025-01-24 08:36:26

使用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(),
                );

              });
            }
          }

use 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(),
                );

              });
            }
          }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文