如何在 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();
}
)
)
);
}
如何在 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();
}
)
)
);
}