Почему состояние родительского виджета флаттера обновляется при каждом изменении состояния дочернего виджета? - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю приложение с запуском (домашний экран), которое отображает список данных, извлеченных из вызова 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)
...