为什么每次更改子窗口小部件状态时,父颤动窗口小部件的状态都会更新?

时间:2018-11-17 16:46:13

标签: flutter state navigator

我一直在创建一个带有start(主屏幕)的应用程序,该应用程序显示从REST API调用中提取的数据列表。当窗口小部件的状态更新时,触发此操作-一切正常。

我还加载了许多子屏幕(例如设置屏幕):

Navigator.push

我注意到,如果状态在我的设置屏幕中更改,则主屏幕状态也会更新,因此它将再次调用REST api。我已经进行了一些测试,这似乎适用于Navigator堆栈中的任何子窗口小部件,其中状态更新似乎从右上角向上传递回了窗口小部件树。

这是我以为状态更改沿小部件树发生的预期行为吗?还是我对它的工作方式有误解?

在我看来,HomeScreen中的REST调用会不断执行,并且每次子小部件发生状态更改时屏幕都会更新,这似乎有点效率低下,因为它是Navigator堆栈的基础并且未被使用/查看

我已经建立了一个简单的测试项目,在Github here上对此进行了显示。

  • Flutter(在Mac OS X 10.14.1 18B75上为Channel beta,v0.11.3,语言环境为en-GB)
  • Android工具链-为Android设备开发(Android SDK 28.0.3)
  • iOS工具链-为iOS设备(Xcode 10.1)开发
  • Android Studio(版本3.1)
  • VS代码(1.29.1版)

0 个答案:

没有答案