如何在 initstate 中异步获取数据,然后创建构建方法并传递数据?

how fetch data async in initstate and then create build method and pass data?

如何在 initstate 中异步获取数据,然后创建构建方法并传递数据?

我想在 initstate 中从 API 异步获取数据,然后创建构建方法这是我的代码:

Future<void> getCurrency() async {
NetworkHelper networkHelper = await NetworkHelper(
    url: 'https://rest.coinapi.io/v1/exchangerate/BTC/USD?apikey=$kApiKey');
var currencyData = await networkHelper.getData();
currencyrate = currencyData['rate'];

}

晚双倍率;

@覆盖 小部件构建(BuildContext 上下文){ return脚手架( body: 安全区域( child: 中心( child: 文字( '1 BTC = $rate USD', 样式:TextStyle(字体大小:20,颜色:Colors.black), ), ), )); } }

或者您可以使用 FutureBuilder 小部件,它可以解包您在该方法中调用的数据;你可以 return 它作为你的数据的未来, FutureBuilder 可以处理它,如:


Future<double> getCurrency() async {
   NetworkHelper networkHelper = await NetworkHelper(
    url: 'https://rest.coinapi.io/v1/exchangerate/BTC/USD?apikey=$kApiKey');
   var currencyData = await networkHelper.getData();
   double currencyrate = currencyData['rate'];
   return currencyrate;
}

然后在你的 build 方法中:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: FutureBuilder(
        future: getCurrency(),
        builder: (context, snapshot) {
          
          if (snapshot.hasData) {
            var rate = snapshot.data as double;
            return Center(
              child: Text('1BTC = $rate USD', 
                 style: TextStyle(fontSize: 20, color: Colors.black)
            );
          }

          return CircularProgressIndicator();
        }
      )
    )
  );
}