我注意到在颤振应用程序中经常调用 build 方法。
我知道,如果 statefulWidget 中的页面状态发生变化,则会触发 build 方法。但我也注意到,即使应用程序中没有任何更改,也会调用 build 方法。
考虑到您将应用程序留给自己的情况,构建方法被频繁调用是否正常?如果是这样,为什么以及多久一次?
build 方法在setState您每次调用时调用,您的小部件的依赖项更新,或任何父小部件被重建(当setState在这些小部件中被调用时)。
你的部件将依赖于任何InheritedWidget使用,例如Theme.of(context),MediaQuery.of(context)等等。
这意味着,如果该主题,例如或屏幕方向互换改变,你的小部件也将被重建。
当您使用的小部件一样MaterialApp,Scaffold等该框架提供的,你的widget将被重建了很多,因为这些父控件依赖于很多InheritedWidget的,然后被重建,这会导致你的窗口小部件被重建为好。
没有多少重建是“正常的”,因为这完全取决于您的树大小,最重要的是该树中的小部件。如果你要跑runApp(Container()),则不会进行重建。
请记住,所有这些重建可能都有充分的理由发生,而 Flutter 就是为此而构建的,因此您无需担心这一点。
您应该开始担心的唯一一点是,当您不断进行重建时,这可能是由setState您使用不正确的某些构建器(内部调用)引起的。
该文档列出了可能发生重建的所有特定情况:
如果您想了解InheritedWidget工作原理,请参阅此答案。当父小部件中的重建导致子树重建时,它也会涉及。