Передача данных между братьями и сестрами - флаттер - PullRequest
0 голосов
/ 13 июня 2019

У меня есть три виджета, виджет Crud, виджет Crud формы и виджет списка Crud. Для простоты назовем их виджетами A, B и C соответственно.

Виджет A - это просто оболочка для B и C.

Итак, иерархия такая

A
-B
-C

* Обратите внимание, что B и C являются братьями и сестрами, а A является родителем

Виджет C имеет только список пользователей, и при нажатии на пользователя в этом списке я бы хотел, чтобы виджет B получал эти пользовательские данные и заполнял поля TextFormFields этими данными пользователей.

Как лучше всего передавать данные в виджете C в виджет B?

Виджет A имеет пользовательское свойство в своем состоянии и имеет функцию, которую он может передавать, что принимает пользователя в качестве аргумента и обновляет его собственное состояние при вызове. Виджет C вызывает эту функцию, когда один из пользователей в списке касается.

Я подтвердил, что состояние в виджете A обновляется при этом нажатии.

Моя проблема, с которой я сталкиваюсь, заключается в том, что, хотя у меня есть свойство пользователя для виджета b, этот виджет не получает обновленные значения и не перерисовывается.

У меня есть начальное значение для полей формы в виджете B, например ... initialValue: widget.user.firstName.isEmpty ? user.firstName : widget.user.firstName;

Таким образом, логика проста: если передаваемые данные имеют значение, используйте это значение, в противном случае используйте значение модели в состоянии, не значение передаваемого пользователя.

...