Я немного новичок в Flutter
, поэтому я не знаю, является ли это "правильным" способом обновления данных, собранных с сервера. В моем случае то, что я делаю, - это (мой код приложения довольно длинный, я думаю, что приведенного ниже описания будет достаточно):
- Позвольте пользователю создать пользовательскую форму для данной даты.
- Пусть он загрузит данные на сервер (точнее,
Firebase
). - Если он щелкнет по дате, форму следует обновить до самой последней, сохраненной на
Firebase
. - Для этого я удаляю все виджеты
TextFormField
(они содержатся в Map
, который я сбрасываю с помощью widgetsMap = {}
, что я также делаю для самих данных формы)и перестроить их с использованием данных, извлеченных из Firebase
. - .
TextFormField
должен иметь начальное значение на основе того, что было извлечено из Firebase
. Чтобы добиться этого, я пытался использовать controller
и initialValue
, но ни один из них не сработал. - Проблема заключается в том, что, если я захочу обновить начальное значение поля во второй раз, предыдущее останется. Например, если
date 1
имеет начальное значение Hello
, а date 2
имеет начальное значение World
;когда я нажимаю date 2
из date 1
, хотя виджеты TextFormField
(их может быть и другое количество) будут построены правильно, показанное начальное значение все равно будет Hello
.
Так что же происходит? Разве initialValue
виджета не должен быть уничтожен после того, как виджет и данные были сброшены? Эти объекты все еще существуют где-то в фоновом режиме, даже после того, как я сбросил их с = {}
(я думал, что, поскольку dart
является языком для сбора мусора, эти объекты будут удалены, как только исчезнут ссылки на них ...)