在编辑模式下更改日期格式,而不是在flutter showDatePicker()中选择日期

时间:2020-07-24 18:57:00

标签: flutter datepicker dateformatter

我正在使用showDatePicker()在我的flutter应用程序中选择一个日期。我将日期格式更改为我的要求,即dd / MM / yyyy。一切正常,但如果我从日期选择器中单击编辑笔图标,然后输入dd / MM / yyyy(15/10/2020)format,则显示无效格式。

请帮助我任何人。这是我的代码。

TextFormField(
  controller: startDateAnnuityCtl,
  validator: (String value) {
    if (value.isEmpty) {
      return 'Enter Start date of annuity *';
    } else {
          _formObject.amrfNoAnnuityStartString = value;
    }
    return null;
  },
  onSaved: (String value) {
    _formObject.amrfNoAnnuityStartString = value;
  },
  decoration: InputDecoration(
      isDense: true, // Added this
      contentPadding: EdgeInsets.all(12),
      filled: true,
      fillColor: Color(0xff5a9fd6).withOpacity(0.15),
      focusedBorder: OutlineInputBorder(
        borderSide: BorderSide(
          color: Color(0xff5a9fd6).withOpacity(1.0),
        ),
        borderRadius: BorderRadius.circular(2.0),
      ),
      enabledBorder: OutlineInputBorder(
        borderSide: BorderSide(
          color: Colors.transparent,
        ),
        borderRadius: BorderRadius.circular(1.0),
      )),
  onTap: () async {
    formKey1.currentState.save();
    DateTime date = DateTime(1900);
    FocusScope.of(context).requestFocus(new FocusNode());
    date = await showDatePicker(
        context: context,

        initialDate: DateTime.now(),
        firstDate: DateTime(1900),
        lastDate: DateTime(2100));
    if (date != null) {
      setState(() {
        var dtnew =
        new DateFormat('dd/MM/yyyy').format(date);
        _formObject.amrfNoAnnuityStartString = dtnew;
        startDateAnnuityCtl.text = _formObject.amrfNoAnnuityStartString;
      });
    }
  },
),

enter image description here

2 个答案:

答案 0 :(得分:0)

在日期选择器中输入日期时,它将采用MM / dd / yyyy格式输入。因此,您会收到错误消息,说明格式无效。目前,我找不到在日期选择器中更改文本字段格式的解决方案。

答案 1 :(得分:0)

不确定这是否是最好的方法,但是我创建了自己的DefaultMaterialLocalizations并更改了parseCompactDate方法的行为。