Дерево как государственное управление - PullRequest
0 голосов
/ 29 марта 2020

У меня есть флаттер с древовидной моделью. Допустим, у нас есть список компаний, который содержит список сотрудников, который содержит список задач. Теперь у меня есть три страницы - первая отображает список компаний, вторая - подробности компании со списком сотрудников и третья - подробности сотрудника со списком задач. Я передаю компанию на второй экран в качестве именованного аргумента навигации и работника таким же образом на третий экран. На втором экране можно редактировать компанию, на третьем редактировать сотрудника. В моей текущей ситуации второй и третий экран - это виджет без состояния, который, конечно, приводит к тому, что пользовательский интерфейс не перерисовывается, когда я что-то изменяю на этих экранах. Также существует требование, что всякий раз, когда что-то изменяется в этой иерархии, должен быть какой-то метод, вызываемый на уровне root (список компаний) для пересчета чего-либо.

Поэтому вопрос заключается в том, как мне разрешить управление состоянием здесь?

  1. Должны ли эти два экрана также быть виджетами с состоянием? Разве это не было бы более производительным, если бы только root один был с состоянием, а вложенные просто как-то сообщали бы root, что состояние было изменено?
  2. Если бы я использовал обратные вызовы, чтобы изменить состояние с дочерний к родителю, это не было бы идеально, потому что мне нужно было бы передать объект, над которым я работаю (например, сотрудник), а затем найти его в списке и обновить его в виджете root. Но это не имеет никакого смысла, потому что этот объект уже изменен. Поэтому мне просто нужно сказать flutter, что он должен перестраивать виджеты вложенных экранов.
  3. Помимо перестройки виджетов, мне также нужно пересчитывать что-то в состоянии уровня root всякий раз, когда происходит изменение. Как мне этого добиться?

Надеюсь, этот пост понятен:)

...