【问题标题】:TextFormField: manipulate initial Value when using ControllerTextFormField:使用控制器时操作初始值
【发布时间】:2021-10-10 18:07:20
【问题描述】:

我有一个 TextFormField,我在其中使用控制器来显示日期。这是代码sn-p:

DateTime dateTime = DateTime.now();
...
child: TextFormField(
            controller: widget.controllerDate,
            onTap: () => Dialogs.showSheet(context,
                child: buildDatePicker(), onClicked: () {
                  setState(() {
                    widget.controllerDate.text = dateTime.toIso8601String();
                  });
                  Navigator.pop(context);
                }),
            readOnly: true,
            decoration: const InputDecoration(
              hintText: 'Day',
              enabledBorder: InputBorder.none,
              focusedBorder: InputBorder.none,
            ),
          ),

问题是我不想显示控制器持有的完整值。 Inseat 我想将日期转换为特定格式,但我不知道如何操作代码。

【问题讨论】:

    标签: flutter dart controller textfield textformfield


    【解决方案1】:

    您可以使用 Dart intl 库将 DayTime 转换为特定的字符串格式。

    var formattedDate = DateFormat("dd-MM-yyyy").format(DateTime.now());
    

    然后,您可以将此字符串分配给 TextFormField 的控制器文本。

    顺便说一句,我不相信您可以更改 widget.controllerDate 的值,因为它是一个最终字段!我建议您在小部件的 build 方法中创建一个 TextEditingController 变量并将其用作 TextFormField 的控制器,并使用 setState 更新其值和小部件。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2013-07-04
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多