Flutter中ListView.builder持续返回null无法获取JSON数据如何解决
问题排查与修复方案
1. 首要排查点:HonPage实例化时未传Status参数
你定义的HonPage组件中status是可选参数,默认值为null。如果创建HonPage实例时没有主动传入已经解析好的Status对象,widget.status本身就是空值,此时访问widget.status.title自然会返回空,最终显示为NULL。
你可以在initState中加打印快速验证:
@override void initState() { super.initState(); print('传入的Status实例:${widget.status}'); if (widget.status != null) { print('Status的title字段值:${widget.status!.title}'); } }
如果打印结果中widget.status为null,直接去上层调用代码补传参数即可。
2. 第二排查点:JSON解析逻辑不匹配
你给出的接口返回JSON是数组结构:
[{"title": "NAME ME", "status": "publish"}]
而Status的构造方法接收的是Map<String, dynamic>类型的参数,如果你直接把整个数组传给Status构造方法,会导致解析失败,title和status字段都不会被正确赋值。
正确的解析写法应该是先取数组中对应下标的对象,再传给Status构造:
// 假设接口返回的原始数据存在responseData变量中 Status singleStatus = Status(responseData[0]); // 取数组第一个元素解析
3. 可选优化:修复ListView逻辑问题
你当前写死itemCount: 10,且所有列表项都读取同一个widget.status的title值,就算参数传对也会出现10条完全相同的内容,不符合常规列表展示多条数据的需求。如果要展示多条Status数据,可以修改组件参数为列表类型:
class HonPage extends StatefulWidget { final List<Status> statusList; const HonPage({Key? key, required this.statusList}) : super(key: key); @override _HonPageState createState() => _HonPageState(); } class _HonPageState extends State<HonPage> { @override Widget build(BuildContext context) { return ListView.builder( itemCount: widget.statusList.length, itemBuilder: (context, index) { final item = widget.statusList[index]; return ListTile( title: Text(item.title ?? ""), ); } ); } }
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

