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

Flutter使用Dio库时出现Response类未定义[]运算符错误求助

解决Dio中Response无法使用[]运算符的问题

问题原因

Dio库的Response类本身没有定义[]运算符,直接通过response[0]['articles']访问响应内容是错误的。你需要先访问Response对象的data属性——这个属性才是接口返回的JSON数据(通常为Map或List类型),支持用[]运算符取值。

修正后的代码

class Screen extends StatefulWidget {
  const Screen({Key? key}) : super(key: key);

  @override
  State<Screen> createState() => _ScreenState();
}

class _ScreenState extends State<Screen> {
  @override
  void initState() {
    super.initState();
    requestUrl();
  }

  Future<dynamic> requestUrl() async {
    List<Response> response;
    var dio = Dio();
    var newsHome =
        'https://newsapi.org/v2/top-headlines?country=kr&apiKey=3e3d6c4106c84f27be6d9578970fc4e8';

    response = await Future.wait([
      dio.get(newsHome),
    ]);
    // 修正:先访问data属性再取值
    print(response[0].data['articles']);
  }
}

额外建议

为提升类型安全性,可将data显式转换为Map类型,避免潜在类型错误:

print((response[0].data as Map<String, dynamic>)['articles']);

更规范的做法是定义对应的数据模型类,借助json_serializable等工具将data解析为实体类,进一步提升代码可读性与稳定性。

内容的提问来源于stack exchange,提问作者김보훈

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:24:27