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

Flutter: avoid build() method of previous route being called when navigate to next route

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

收到数据并完成动画后,它会导航到第二条路线。

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

原来在构建第二条路由的时候,也调用了之前路由的构建方法,又进行了一次不必要的API调用。

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

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

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

你想做的是与框架作对。这是徒劳的努力。相反,您应该使用框架。以下是原因和方式:

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

请将您的 API 调用移至 initState 方法,将其结果保存在您所在州 class 和 setState 的字段中并获取 build使用它们而不产生任何副作用的方法。