【问题标题】:Change date format in edit mode instead of picking a date in flutter showDatePicker()在编辑模式下更改日期格式,而不是在颤振 showDatePicker() 中选择日期
【发布时间】:2020-07-24 18:57:00
【问题描述】:

我正在使用 showDatePicker() 在我的颤振应用程序中选择一个日期。我将日期格式更改为我的要求,即 dd/MM/yyyy。一切工作正常,但如果我单击日期选择器中的编辑笔图标并输入 dd/MM/yyyy (15/10/2020) 格式,那么它会显示无效格式。

请在这方面帮助我。这是我的代码。

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

【问题讨论】:

    标签: flutter datepicker dateformatter


    【解决方案1】:

    在日期选择器中输入日期时,它以 MM/dd/yyyy 格式输入。因此,您会收到一条错误消息,指出格式无效。目前我没有找到更改日期选择器中文本字段格式的解决方案。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 注意:非常简短的答案和/或回帖者的问题可能应该是 cmets。你只需要 50 个代表点就可以在一个问题下发表评论 - 你能把它移到那里吗?
      【解决方案3】:

      您可以通过在 datepicker 中添加以下行来做到这一点。

      locale:  const Locale('en','IN'),
      fieldHintText: 'dd/mm/yyyy',
      
      showDatePicker(
                       locale:  const Locale('en','IN'),
                       context: context,
                       initialDate: DateTime.now(),
                       firstDate:DateTime.now(),
                       lastDate: DateTime.now(),
                       fieldHintText: 'dd/mm/yyyy',
                       builder: (BuildContext context, Widget child){
                       .................... 
                       }
                    );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-15
        • 2017-06-25
        • 2013-11-28
        • 2017-11-05
        • 1970-01-01
        相关资源
        最近更新 更多