我正在嘗試構建一個通過 API coingeckoAPI 獲取加密日期的應用程式。
我已經設法在應用程式中接收到一個加密貨幣串列,但是,現在我正在嘗試從某個時間范圍匯入價格資料。這就是我嘗試這樣做的方式:我想獲取一個資料串列,根據我正在呼叫的 api 鏈接,該串列包含一個時間戳和一個值(價格)。但是當我嘗試列印一個等于 API 回傳值的變數時,我只會得到這個:“[]”。但我希望它回傳資料串列的串列,如訊息底部所示。
void getGraphData(DateTime range) async {
int date = range.toUtc().millisecondsSinceEpoch;
int maxDate = DateTime.now().toUtc().millisecondsSinceEpoch;
var data = await get(
Uri.parse(
"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$date&to=$maxDate"),
);
if (data.statusCode == 200) {
List<dynamic> dataList = [];
dataList = jsonDecode(data.body)["prices"];
print(dataList);
}
}
API 資料的格式如下:
{
"prices": [
[
1612137600000,
33064.78676701507
],
[
1612224000000,
33405.99035714327
],
[
1612310400000,
35485.98593382442
],
[
1612396800000,
37494.71762460426
],
],
}
如果你想看看這里:https : //api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1612129039& to =1640039904。
我不知道如何訪問內部串列中的資料。所以這些串列的串列,如上所示
[
1612137600000,
33064.78676701507
],
uj5u.com熱心網友回復:
我添加了一個如何訪問內部串列的示例
void getGraphData(DateTime range) async {
int date = range.toUtc().millisecondsSinceEpoch;
int maxDate = DateTime.now().toUtc().millisecondsSinceEpoch;
var data = await get(
Uri.parse(
"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=$date&to=$maxDate"),
);
if (data.statusCode == 200) {
List<dynamic> dataList = [];
dataList = jsonDecode(data.body)["prices"];
final firstItem = dataList.first;
print('First: ${firstItem.first} - Last: ${firstItem.last}');
}
}
uj5u.com熱心網友回復:
嘗試在非空串列上使用map()或forEach(),并且僅當您確定每個陣列項中的欄位數是常量時(此處 2 是大小),如下所示:
var list = dataList.map((e) => {"time" : e[0], "value" : e[1]}).toList(growable : true);
您已將陣列轉換為帶有鍵time和value 的映射,您可以進一步輕松使用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/390104.html
