我是新来的flutter.我试图使一个窗体的取消按钮.我可以清除所有的TextFormField成功除了这个只读TextFormField其值是由TextEditingController设置.
这是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();
}
我尝试将两个TextEditingController.clear()调用 Package 在setstate()函数中,但是它不起作用。
1条答案
按热度按时间vulvrdjw1#
如果
TextEditingController.clear()
没有清除TextFormField上的值,则很可能是在重新生成屏幕时设置了该值。解决此问题的方法是在TextEditingController上设置新的文本值。