我有一个使用TabBar的小部件。父小部件发出一个http调用,该调用需要在绘制TabBar小部件之前完成(它们使用数据)。如何强制TabBarView小部件等待父http调用完成,并设置状态变量,然后在TabBarView小部件中使用该变量。似乎解决方案是对所有TabBar小部件使用FutureBuilder,但是这些小部件如何知道等待父部件完成呢?这些小部件等待父级的数据。
父窗口小部件-进行http调用,设置状态变量x TabBarView窗口小部件,等待x。除非我抛出一些伪数据,否则会抛出一个错误,因为TB1在x被设置之前被调用。
父小部件
void initState() {
x = await _getdata();
setState(() => this.x = x);
}..。
TabBarView(
controller: _tabController,
children: [
new TB1(x),
new TB2(x),
new TB3(x),
]
)发布于 2019-07-16 14:44:34
您可以有条件地构建您的小部件
DataType x = null;
void initState() {
_getdata().then((_x) {
if (mounted){ // Just to be sure is safe to call setState, since _getdata is asynchronous
setState(() => x = _x);
}
});
}
Widget build(BuildContext context){
// Loading
if (x == null){
return CircularProgressIndicator();
}else{
return TabBarView(...);
}
}https://stackoverflow.com/questions/57051230
复制相似问题