Почему состояние родительского виджета флаттера обновляется каждый раз, когда изменяется состояние дочернего виджета?
Я создал приложение с запуском (домашний экран), которое отображает список данных, извлеченных из вызова API REST. Это срабатывает при обновлении состояния виджета - все работает нормально.
У меня также есть несколько дочерних экранов (например, экран настроек), загруженных:
Navigator.push
Я заметил, что, если состояние изменяется на моем экране настроек, состояние домашнего экрана также обновляется, и поэтому он снова вызывает API REST. Я провел некоторое тестирование, и это, кажется, работает для любого дочернего виджета в стеке навигатора, где обновление состояния, кажется, передается обратно вверх по дереву виджетов прямо вверх.
Является ли это ожидаемым поведением, когда я думал, что изменения состояния спустились вниз по дереву виджетов, а не обратно, или это мое недопонимание того, как это работает?
Мне просто кажется неэффективным, что мой вызов REST на HomeScreen продолжает выполняться, и экран обновляется каждый раз, когда дочерний виджет имеет изменение состояния, поскольку он является основой стека навигатора и не используется / не просматривается.
Я разместил простой тестовый проект, который показывает это на Github здесь.
- Флаттер (Channel beta, v0.11.3, в Mac OS X 10.14.1 18B75, локаль en-GB)
- Android toolchain - разработка для устройств Android (Android SDK 28.0.3)
- iOS toolchain - разработка для устройств iOS (Xcode 10.1)
- Android Studio (версия 3.1)
- Код VS (версия 1.29.1)