簡體   English   中英

Flutter TextFormField 未更新其值

[英]Flutter TextFormField not updating it's value

我制作了一個 TimePicker,當用戶點擊textFormField時它會彈出它工作正常但唯一的問題是我想用從timePicker中選擇的值更新textFormField值我已經聲明了controller並初始化了一個selectedTimer

  TimeOfDay selectedTime = TimeOfDay(hour: 0, minute: 0);
  TextEditingController _timeController = TextEditingController();

這是TextFormField的代碼

 TextFormField(
      controller: _timeController,
      onTap: () {
         FocusScope.of(context).requestFocus(new FocusNode());
         _selectTime(context);
      },
  ),

這是方法_selectTime的代碼

_selectTime(BuildContext context) async {
    final TimeOfDay? timeOfDay = await showTimePicker(
      context: context,
      initialTime: selectedTime,
      initialEntryMode: TimePickerEntryMode.dial,
    );
    if (timeOfDay != null && timeOfDay != selectedTime) {
      setState(() {
        selectedTime = timeOfDay;
        TextEditingValue(text: timeOfDay.toString());
      });
    }
  }

如下操作:

_timeController.text=timeOfDay.toString();
 selectTime(BuildContext context) async {
final TimeOfDay? timeOfDay = await showTimePicker(
  context: context,
  initialTime: selectedTime,
  initialEntryMode: TimePickerEntryMode.dial,
);
if (timeOfDay != null && timeOfDay != selectedTime) {
  setState(() {
    selectedTime = timeOfDay;
    _timeController.text=timeOfDay.toString();
    TextEditingValue(text: timeOfDay.toString());
  });
}

}

刪除此行TextEditingValue(text: timeOfDay.toString());

並替換為這個_timeController.text = selectedTime.toString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM