Flutter:避免导航到下一条路线时调用上一条路线的 build() 方法

cod*_*ler 1 build navigator dart flutter statefulwidget

我的 flutter 应用程序显示启动画面 ( statefulWidget) 作为第一条路线。此路由显示动画,同时在后台调用 API 以获取一些数据。

一旦接收到数据并且动画完成,它就会导航到第二条路线。

一切正常,除了当调用Navigator导航到第二条路线时,会显示第二条路线,但我可以再次看到来自第一条路线的 API 的响应,即被调用。

事实证明,在构建第二条路由时,也会调用上一条路由的 build 方法,再次进行不必要的 API 调用。

如何避免这种行为?,我相信这一定是Flutter??

当前流程(非预期):SplashRoute(build) ---> Navigator ---> HomeRoute(build)+SplashRoute(build)

所需流程:SplashRoute(build) ---> Navigator ---> HomeRoute(build)

Gaz*_*kus 7

您要做的是针对该框架工作。这是徒劳的努力。相反,您应该使用该框架。这是为什么以及如何:

构建方法不应发出 API 请求。构建方法应该使用状态类的字段来生成没有任何副作用的 UI。

请将您的 API 调用移动到该initState方法,将它们的结果保存在您的状态类的字段中,setState并让该build方法在不产生任何副作用的情况下使用它们。

  • 我不认为 Flutter 对它会调用构建函数多少次做出任何保证。他们实际上告诉我们要做好准备,因为各种原因它会被多次调用。我不会担心这个。以下是有关这种具体情况的更多信息:https://github.com/flutter/flutter/issues/11655 (2认同)