首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当子部件等待父部件的设置状态完成时,如何在两个有状态小部件之间使用FutureBuilder?

当子部件等待父部件的设置状态完成时,如何在两个有状态小部件之间使用FutureBuilder?
EN

Stack Overflow用户
提问于 2019-07-16 14:28:35
回答 1查看 121关注 0票数 0

我有一个使用TabBar的小部件。父小部件发出一个http调用,该调用需要在绘制TabBar小部件之前完成(它们使用数据)。如何强制TabBarView小部件等待父http调用完成,并设置状态变量,然后在TabBarView小部件中使用该变量。似乎解决方案是对所有TabBar小部件使用FutureBuilder,但是这些小部件如何知道等待父部件完成呢?这些小部件等待父级的数据。

父窗口小部件-进行http调用,设置状态变量x TabBarView窗口小部件,等待x。除非我抛出一些伪数据,否则会抛出一个错误,因为TB1在x被设置之前被调用。

父小部件

代码语言:javascript
复制
  void initState() {
    x = await _getdata();
    setState(() => this.x = x);

  }

..。

代码语言:javascript
复制
        TabBarView(
            controller: _tabController,
            children: [
              new TB1(x),
              new TB2(x),
              new TB3(x),
            ]
        )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-16 14:44:34

您可以有条件地构建您的小部件

代码语言:javascript
复制
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(...);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57051230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档