1

我的颤振应用程序显示初始屏幕 ( statefulWidget) 作为第一条路线。这条路线正在显示一个动画,同时在后台调用 API 来获取一些数据。

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

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

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

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

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

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

4

1 回答 1

7

您正在尝试做的是针对框架工作。这是徒劳的努力。相反,您应该使用框架。以下是原因和方法:

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

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

于 2019-11-13T08:20:07.170 回答