Я создаю приложение с запуском (домашний экран), которое отображает список данных, извлеченных из вызова API REST. Это срабатывает при обновлении состояния виджета - все работает нормально.
У меня также есть несколько дочерних экранов (например, экран настроек), загруженных:
Navigator.push
Я заметил, что если состояние изменяется на экране моих настроек, состояние домашнего экрана также обновляется, и поэтому он снова вызывает API REST. Я провел некоторое тестирование, и это, кажется, работает для любого дочернего виджета в стеке навигатора, где обновление состояния, по-видимому, передается обратно вверх по дереву виджетов прямо вверх.
Является ли это ожидаемым поведением, когда я думал, что изменения состояния пошли вниз по дереву виджетов, а не обратно, или это мое недопонимание того, как это работает?
Мне кажется немного неэффективным, что мой вызов REST в HomeScreen продолжает выполняться, и экран обновляется каждый раз, когда у дочернего виджета изменяется состояние, так как он является основой стека Navigator и не используется / не просматривается .
Я запустил простой тестовый проект, который показывает это на Github здесь .
- Flutter (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 Code (версия 1.29.1)