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,提问作者김보훈
相关产品推荐
相关产品推荐

