Flutter 颤振异步方法返回小部件不工作

Flutter 颤振异步方法返回小部件不工作,flutter,Flutter,在我的代码中,我想根据条件显示浮动操作按钮。该条件是基于HTTP调用进行评估的,HTTP调用本质上是异步的。我下面的代码没有返回任何内容 Widget _getFAB() { var Data = GetDetailsFromHTTP(); userJSON.then((Data ) { if (1 == 2) { return Container(); } else { return FloatingActionBut

在我的代码中,我想根据条件显示浮动操作按钮。该条件是基于HTTP调用进行评估的,HTTP调用本质上是异步的。我下面的代码没有返回任何内容

 Widget _getFAB() {
    var Data = GetDetailsFromHTTP();

    userJSON.then((Data ) {
      if (1 == 2) {
        return Container();
      } else {
        return FloatingActionButton(
            backgroundColor: Colors.deepOrange[800],
            child: Icon(Icons.add_shopping_cart),
            onPressed: null);
      }
    });
  }
wait也不工作,因为它不允许返回类型为widget。
如何创建一个等待异步调用并返回小部件的方法?

您正在非异步方法中使用异步方法

Widget _getFAB() async {
  var Data = GetDetailsFromHTTP();

  return await userJSON.then((Data ) {
    if (1 == 2) {
      return Container();
    } else {
      return FloatingActionButton(
          backgroundColor: Colors.deepOrange[800],
          child: Icon(Icons.add_shopping_cart),
          onPressed: null);
    }
  });
}
最佳方法:更喜欢使用FutureBuilder,这就是本文的目的。

例如:

FutureBuilder<String>(
future: _calculation, // a previously-obtained Future<String> or null
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
  switch (snapshot.connectionState) {
    case ConnectionState.none:
      return Text('Press button to start.');
    case ConnectionState.active:
    case ConnectionState.waiting:
      return Text('Awaiting result...');
    case ConnectionState.done:
      if (snapshot.hasError)
        return Text('Error: ${snapshot.error}');
      return Text('Result: ${snapshot.data}');
  }
  return null; // unreachable
  })
FutureBuilder(
future:_计算,//以前获得的future或null
生成器:(BuildContext上下文,异步快照){
交换机(快照.连接状态){
案例连接状态。无:
返回文本('按下按钮开始');
案例连接状态.active:
案例连接状态。正在等待:
返回文本('等待结果…');
案例连接状态。完成:
if(snapshot.hasError)
返回文本('Error:${snapshot.Error}');
返回文本('Result:${snapshot.data}');
}
返回null;//不可访问
})
您可能需要使用。