我的目標是做一個簡單的 BitcoinApp。我正在嘗試獲取 MyHomePageState 類中的方法來呼叫我在另一個類中擁有的方法。當我編譯并單擊按鈕給我美元的位元幣資訊時,我得到了 setState() 回呼引數回傳到 Future 的錯誤。您可以向我建議任何建議或替代方案嗎?我是 Flutter 和正在調整的新手。這是我的代碼:
///This piece of code is located in MyHomePageState Class
BitcoinCurrency _bitcoin = BitcoinCurrency();
void _getUSDBitcoin(){
setState(() async{
_bitcoin.usdBitcoin();
});
}
///This is the class I have outside of MyHomePageState Class.
class BitcoinCurrency {
///Variables we want for the information
String _disclaimer = "N/A";
String _time = "N/A";
String _currencyBitcoin = "N/A";
///Getters for our variables
get disclaimer => _disclaimer;
get time => _time;
get currencyBitcoin => _currencyBitcoin;
///Methods()
void usdBitcoin() async{
var url = Uri.https('api.coindesk.com', '/v1/bpi/currentprice.json');
var response = await http.get(url);
var httpBody = response.body;
var decoded = json.decode(httpBody);
_disclaimer = decoded['disclaimer'];
_time = decoded['time']['updated'];
_currencyBitcoin = decoded['bpi']['USD']['rate'];
}
}
uj5u.com熱心網友回復:
您可以將usdBitcoinvoid 轉換為Future<void>
Future<void? usdBitcoin() async{
var url = Uri.https('api.coindesk.com', '/v1/bpi/currentprice.json');
var response = await http.get(url);
var httpBody = response.body;
var decoded = json.decode(httpBody);
_disclaimer = decoded['disclaimer'];
_time = decoded['time']['updated'];
_currencyBitcoin = decoded['bpi']['USD']['rate'];
}
并呼叫 setState 之類的
usdBitcoin().then((value) => setState(() {}));
uj5u.com熱心網友回復:
setState不能是異步函式。usdBitcoin必須是一個Future方法,所以你必須在開始之前呼叫它setState。
usdBitcoin方法:
Future usdBitcoin() async{
var url = Uri.https('api.coindesk.com', '/v1/bpi/currentprice.json');
var response = await http.get(url);
var httpBody = response.body;
var decoded = json.decode(httpBody);
_disclaimer = decoded['disclaimer'];
_time = decoded['time']['updated'];
_currencyBitcoin = decoded['bpi']['USD']['rate'];
}
在initState:
usdBitcoin().then(
(value) => setState(
() {
},
),
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/509922.html
標籤:扑镖
