You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中JSON解析后ListView.builder()无法正常工作求助

问题排查与修复方案

嘿,我仔细看了你的代码,发现问题根源其实出在本地JSON字符串的转义处理上,另外还有几个小细节可以优化,咱们一步步来解决:

1. 修正本地JSON字符串的转义错误

你用了Dart的多行原始字符串('''包裹),这种写法内部的双引号根本不需要加反斜杠转义!你现在写的\"message\"会被当成JSON里的无效转义字符,直接导致json.decode解析失败,自然生成不了目标列表。

把localJson改成这样:

final localJson = '''
[
  {
    "message": "Some message here 1"
  },
  {
    "message": "Some message here 2"
  },
  {
    "message": "Some message here 3"
  }
]
''';

2. 给JSON解析添加错误捕获(可选但推荐)

为了更清晰地定位问题,建议在parseJson函数里加个try-catch块,方便排查解析阶段的错误:

List<PodoClass> parseJson(String responseBody) {
  try {
    final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();
    return parsed.map<PodoClass>((json) => PodoClass.fromJson(json)).toList();
  } catch (e) {
    print('JSON解析错误详情: $e');
    rethrow; // 把错误抛出去让FutureBuilder捕获展示
  }
}

3. 优化PODO类的构造函数(可选)

可以把fromJson改成factory构造函数,写法更规范,也更符合Dart的最佳实践:

class PodoClass {
  String message;
  PodoClass({this.message});
  
  factory PodoClass.fromJson(Map<String, dynamic> json) {
    return PodoClass(
      message: json['message'] as String,
    );
  }
}

验证效果

做完上面的修改后重新运行代码,你应该就能看到列表正常加载出三条文本了。之前的问题完全是因为多余的转义字符导致JSON解析失败,所以FutureBuilder一直停在Loading状态,或者你可以通过snapshot.error看到具体的解析错误信息。

内容的提问来源于stack exchange,提问作者Omi Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:55:22