无法在 Flutter 中访问我的 json 数据,它总是为我的数据返回 Nullvalue

Posted

技术标签:

【中文标题】无法在 Flutter 中访问我的 json 数据,它总是为我的数据返回 Nullvalue【英文标题】:Can't access my json data in Flutter, It always returns a Nullvalue for my data 【发布时间】:2021-11-26 21:15:11 【问题描述】:

请帮忙,我很笨。我有一个问题,我无法在我的 FutureBuilder 中访问我的 JSON 数据,我总是会在我的 FutureBuilder 中获得 Null 值。由于 Nullsafety,我没有收到错误消息。请帮忙。

FutureBuilder<List<Analysts>>(
                      future: iexcloudanalysts.getData(),
                      builder: (context, snapshot) 
                        if (snapshot.hasData) 
                          Analysts analysts = Analysts();
                          return Text(
                            analysts.consensusDate ?? 'Error',
                            style: TextStyle(
                              color: Colors.white,
                              fontSize: 32,
                              fontWeight: FontWeight.bold,
                            ),
                          );
                        

这是我的分析师模型:

class Analysts 

  final String analystCount;
  final String consensusDate;
  final String marketConsensus;
  final String marketConsensusTargetPrice;

  Analysts(this.analystCount, this.consensusDate, this.marketConsensus,
    this.marketConsensusTargetPrice,);

  factory Analysts.fromJson(Map<String, dynamic> json) 
    return Analysts(
      analystCount: json['analystCount'].toString() as String,
      consensusDate: json['consensusDate'] as String,
      marketConsensus: json['marketConsensus'].toString() as String,
      marketConsensusTargetPrice: json['marketConsensusTargetPrice'].toString() as String,
    );
  

这是我的云服务:

class IEXCloudServiceAnalysts 

  Future<List<Analysts>> getData() async

    var url = Uri.parse("https://sandbox.iexapis.com/stable/time-series/CORE_ESTIMATES/TSLA?token=Tpk_85b3b5cdb32147d3a0fb751cc5176cdd");
    Response res = await get(url);

    return parseAnalysis(res.body);

  


List<Analysts> parseAnalysis(String responseBody) 
  final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>();
  return parsed.map<Analysts>((json) => Analysts.fromJson(json)).toList();

【问题讨论】:

【参考方案1】:

使用snapshot.data![0]?.consensusDate 而不是analysts.consensusDate

【讨论】:

不能使用!因为我使用了更新版本的颤振。如果我尝试 snapshot.data.toString 它只返回“'Analysts'的实例” 我编辑了我的答案 答案 snapshot.data[0]?.consensusDate 为我工作。非常感谢! :)

以上是关于无法在 Flutter 中访问我的 json 数据,它总是为我的数据返回 Nullvalue的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中,我如何使用 API 和 GetX 在 JSON 中获取数据

在flutter中访问quicktype JSON对象

在 Flutter/dart 的 Futurebuilder 中访问我的未来不起作用

在flutter中解析嵌套的JSON列表时出错

Flutter - 无法将所有 json 数据从 api 响应保存到 Iterable List 编辑:(无法从可迭代列表中获取数据)

Flutter应用程序在使用flutter_driver运行时无法加载Json文件