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

How do I use a FutureBuilder between two stateful widgets when the child waits for a parent's set state to complete?

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

的数据

Parent 小部件 - 进行 http 调用,设置状态变量 x TabBarView 小部件,等待 x。抛出错误是因为在设置 x 之前调用了 TB1,除非我输入一些虚拟数据。

Parent 小部件

  void initState() {
    x = await _getdata();
    setState(() => this.x = x);

  }

...

        TabBarView(
            controller: _tabController,
            children: [
              new TB1(x),
              new TB2(x),
              new TB3(x),
            ]
        )

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

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(...);
    }
}