我的Flutter应用正在显示启动画面(statefulWidget
),这是第一条路线。这条路线显示的是动画,而在后台调用API来获取一些数据。
一旦接收到数据并且动画完成,它将导航到第二条路线。
[一切正常,除了在调用Navigator
导航到第二条路线时,显示了第二条路线,但我可以再次看到来自正在调用的第一条路线的API的响应。
事实证明,当构建第二条路线时,也会调用前一条路线的build方法,从而再次进行不必要的API调用。
如何避免这种行为?,我相信这一定是Flutter
上的错误?
当前流量(不需要):SplashRoute(构建)--->导航器---> HomeRoute(构建)+ SplashRoute(构建)
所需流程:SplashRoute(构建)--->导航器---> HomeRoute(构建)
您试图做的是针对框架进行工作。这是徒劳的。相反,您应该使用框架。这是原因和方式:
构建方法不应发出API请求。生成方法应使用状态类的字段来生成没有任何副作用的UI。
请将您的API调用移至initState
方法,并用setState
将其结果保存在状态类的字段中,并获得build
方法以使用它们而不会产生任何副作用。