Flutter TextEditController 不会清除 readOnly TextFormField 中的文本



我是飘飘的新手。我正在尝试为表单制作取消按钮。我可以成功清除所有TextFormField,除了这个只读TextFormField,其值由TextEditController设置。

这是 TextFormField。我可以将 TextFormField(( 的值设置为用户成功选择的日期。

final _start_time_controller = TextEditingController();
final _finish_time_controller = TextEditingController();
Flexible(
child: TextFormField(
onTap: () async {
final selectedDate = await _selectDateTime(context);
if(selectedDate == null) return;
final selectedTime = await _selectTime(context);
if(selectedTime == null) return;
setState(() {
_start_time = DateTime(selectedDate.year,selectedDate.month,selectedDate.day,selectedTime.hour,selectedTime.minute);
_start_time_controller.text = _start_time.toString();
});
},
decoration: InputDecoration(
labelText: 'Start Time',
border: OutlineInputBorder(borderRadius: BorderRadius.circular(10.0))
),
controller: _start_time_controller,
readOnly: true,
validator: (value) => value.isEmpty ? 'Start Time can't be empty' : null,
),                         
),

这是取消按钮。

Expanded(
child: RoundedButton(
text: 'Cancel',
buttonColor: Colors.grey,
textColor: Colors.black,
press: cancel,
),
) ,        

这是取消功能。

void cancel(){
_start_time = null;
_finish_time = null;
_start_time_controller.clear();
_finish_time_controller.clear();
formKey.currentState.reset();
}      

我试图将两个 TextEditorController.clear(( 调用包装在一个 setstate(( 函数中,但它不起作用。

如果TextEditingController.clear()未清除 TextFormField 上的值,则很可能是在重新生成屏幕时设置的值。此问题的解决方法是在文本编辑控制器上设置新的文本值。

setState(() {
_start_time_controller.text = '';
_finish_time_controller.text = '';
});

最新更新