页面总是先渲染了widget组件,后发起http请求。导致渲染widget组件时没有数据

来源:9-8 活动入口实现

愤怒的米饭

2024-08-12

图片描述

如上图,我在开发navigation button 导航组件时, 在home页面中引入了一个自定义的NavigationButtonWidget组件。
我在home页面初始化时调用_getNavigationButtonList()方法, 请求服务端接口,获取数据。然后将请求下来的数据传入NavigationButtonWidget组件中。
但是在页面渲染时,却发现NavigationButtonWidget组件没有渲染出来。
我在NavigationButtonWidget组件中的Items构建组件中打印,又在home页面发起http请求时打印。发现打印顺序是,先执行了NavigationButtonWidget组件中的打印,又执行了http请求响应数据的打印。
我想知道,如何才能让http请求先执行,然后再执行NavigationButtonWidget组件?

写回答

2回答

愤怒的米饭

提问者

2024-08-13

https://img1.sycdn.imooc.com/szimg/66bad11009817fa110911177.jpg

如上图

0
1
CrazyCodeBoy
另外发现在_getNavigationButtonList 数据回来后没有调用setState来通知界面渲染数据
2024-08-14
共1条回复

CrazyCodeBoy

2024-08-12

问题出在调用_getNavigationButtonList方法的时候没有用await导致接口请求还没发出就已经在渲染页面了。
0
2
CrazyCodeBoy
回复
愤怒的米饭
在_getNavigationButtonList中进行网络请求的时候添加也是可以的,在数据返回来之后在添加数据的时候,记得调用一下setState
2024-08-14
共2条回复

慕课甄选-Flutter零基础极速入门到进阶实战

全新Flutter从入门到进阶,实战仿携程网App

661 学习 · 316 问题

查看课程