Как прослушивать события или изменение данных в родительском виджете и распространять их на дочерний виджет во флаттере?

Скажем, у меня есть два виджета с отслеживанием состояния, родительский и дочерний, каждый из которых написан в отдельном классе. У Child есть функции и обратные вызовы для передачи данных Родителю. Однако, если что-то происходит в родительском виджете, допустим, пользователь нажимает кнопку в родительском виджете, или какой-то процесс завершается и т. Д., Мне также нужно обновить дочерний элемент, и, возможно, скажем, изменить цвет фона на основе того события, которое произошло в родительском виджете . Как этого добиться во флаттере?


person Jonathan John    schedule 27.02.2021    source источник
comment
Я не уверен, что понимаю, нельзя просто передать цвет в параметр ChildWidget as?   -  person Thierry    schedule 27.02.2021


Ответы (1)


Структура государственного управления решает две проблемы:

  1. обеспечение доступа к данным из неиерархических элементов в дереве виджетов
  2. уведомление об изменении данных для запуска перестройки с новыми значениями

В этом пространстве много игроков. Самым распространенным, вероятно, является Provider. Лично я предпочитаю RiverPod. Но используйте то, что вам удобно.

См. https://flutter.dev/docs/development/data-and-backend/state-mgmt/options для получения дополнительных сведений.

person Randal Schwartz    schedule 27.02.2021