Listview.Builder 中的空 return
null return in Listview.Builder
我有这个功能,它给了我 json
var url = '.....';
Future getData() async {
var response = await http.get(url);
var responsebody = jsonDecode(response.body);
data=responsebody["rates"]
print(data);
当我打印 responsebody 时,它会在控制台上显示结果
但是当我尝试用 Listview.builder 调用它时它返回 null
return ListTile(title: Text(data[i]["rates"]["USD"])
我也试过了,没有结果
return ListTile(title: Text(snapshot.data[i]["rates"]["USD"])
我的json
{
timestamp: 1617161125,
base: "USD",
rates: {
USD: 1,
BGN: 1.74474,
ILS: 3.3407,
GBP: 0.72863,
ETH: 0.00054,
DKK: 6.35326,
CAD: 1.26226,
JPY: 110.86172,
HUF: 310.86,
RON: 4.1481,
UAH: 28.475,
XAG: 4.2006,
SEK: 8.7484,
SGD: 1.34751,
HKD: 7.77603,
AUD: 1.31484,
CHF: 0.9442,
XAU: 5.95507,
CNY: 6.5719,
LTC: 0.00517,
HRK: 9.49818,
NZD: 1.43277,
LVL: 0.55989,
EUR: 0.85415,
TRY: 8.3537,
NOK: 8.56244,
RUB: 75.9939,
INR: 73.5781,
MXN: 20.61,
CZK: 22.357,
BRL: 5.7736,
BTC: 0.00002,
PLN: 3.985,
ZAR: 14.9495
}
}
我的Listview.builder代码:
body: FutureBuilder(
future: getData(),
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return ListView.builder(
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, i) {
return ListTile(title: Text(data[i]["rates"]["USD"])
);
},
);
}));
这样写,
Text(snapshot.data["USD"].toString())
,因为你的货币是整数,应该可以。
如评论中所述,您需要 return 函数中的数据。
我有这个功能,它给了我 json
var url = '.....';
Future getData() async {
var response = await http.get(url);
var responsebody = jsonDecode(response.body);
data=responsebody["rates"]
print(data);
当我打印 responsebody 时,它会在控制台上显示结果 但是当我尝试用 Listview.builder 调用它时它返回 null
return ListTile(title: Text(data[i]["rates"]["USD"])
我也试过了,没有结果
return ListTile(title: Text(snapshot.data[i]["rates"]["USD"])
我的json
{
timestamp: 1617161125,
base: "USD",
rates: {
USD: 1,
BGN: 1.74474,
ILS: 3.3407,
GBP: 0.72863,
ETH: 0.00054,
DKK: 6.35326,
CAD: 1.26226,
JPY: 110.86172,
HUF: 310.86,
RON: 4.1481,
UAH: 28.475,
XAG: 4.2006,
SEK: 8.7484,
SGD: 1.34751,
HKD: 7.77603,
AUD: 1.31484,
CHF: 0.9442,
XAU: 5.95507,
CNY: 6.5719,
LTC: 0.00517,
HRK: 9.49818,
NZD: 1.43277,
LVL: 0.55989,
EUR: 0.85415,
TRY: 8.3537,
NOK: 8.56244,
RUB: 75.9939,
INR: 73.5781,
MXN: 20.61,
CZK: 22.357,
BRL: 5.7736,
BTC: 0.00002,
PLN: 3.985,
ZAR: 14.9495
}
}
我的Listview.builder代码:
body: FutureBuilder(
future: getData(),
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return ListView.builder(
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, i) {
return ListTile(title: Text(data[i]["rates"]["USD"])
);
},
);
}));
这样写,
Text(snapshot.data["USD"].toString())
,因为你的货币是整数,应该可以。
如评论中所述,您需要 return 函数中的数据。