Я столкнулся с проблемой. В одном разделе моей страницы у меня есть дата с сегодняшней датой. Если пользователь щелкает стрелку вправо, он переходит на дату вперед, а если пользователь щелкает стрелку влево, он возвращается на дату назад. На кнопках со стрелками я использую setState. Дата меняется нормально.
У меня также есть форма ниже на отдельной карточке. Для каждого textFormField у меня настроен контроллер. Мне пришлось настроить их, потому что initialvalue: вызывается только один раз, поэтому поля никогда не менялись с датой.
В любом случае поля теперь меняются с датой, и это правильно. Но в тот момент, когда я нажимаю на форму, дата верхнего виджета возвращается к исходному значению, в котором она была?
Я проверил это, настроив переопределение didUpdateWidget, и это срабатывает каждый раз, когда я нажимаю на поле формы??? Почему это происходит. Я пока ничего не обновляю.
Когда я использовал контроллер для значения даты, отображаемого между двумя стрелками, оно не меняется, но когда я нажимаю «Отправить», значение, которому оно должно быть присвоено, является неправильным (появляется самая первая дата). Таким образом, похоже, что когда didUpdate срабатывает, он устанавливает то поле, которое я установил в моем расширении класса StatefulWidget {}.
Обновлено: Вау, набрав последнее предложение, я понял, что мне нужно установить значение в моем нижнем классе, которое расширяет State<>. Я использовал его с widget.activeDay.
Думаю, мне все еще любопытно, почему это происходит с полем текстовой формы?





Щелчок по текстовому полю открывает клавиатуру.
Это изменяет размеры экрана и приводит к MaterialApp перестроению маршрута.
Перестроение маршрута в конечном итоге вызывает didUpdateWidget для этого конкретного виджета.