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