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 函数中的数据。