Flutter报错:StreamedResponse类型未定义getter 'body'
解决The getter 'body' isn't defined for the type 'StreamedResponse'问题
问题出在你用http.MultipartRequest.send()获取的StreamedResponse对象本身没有body属性——它是流式响应,需要先将响应流转换为字符串才能解析JSON。
修正步骤:
- 把
response.body替换为await response.stream.bytesToString(),因为StreamedResponse的stream属性是响应内容的字节流,需要先转为字符串才能用jsonDecode解析。 - 确保在异步函数内调用(你的函数已经是
async类型,无需额外修改)。
修改后的完整代码:
loginUser() async { try { final uri = Uri.parse(API.loginURL); var request = http.MultipartRequest('POST', uri); // 传入输入字段数据 request.fields['email'] = emailController.text; request.fields['password'] = passwordController.text; var response = await request.send(); if (response.statusCode == 200) { // 将流式响应转为字符串 String responseBody = await response.stream.bytesToString(); var resBody = jsonDecode(responseBody); bool success_flag = resBody['success']; print("Login successful!"); } else { print("Login failed!"); } } catch (e) { print(e.toString()); } }
补充说明:
如果你的项目文件顶部没有导入JSON解析相关库,记得添加:
import 'dart:convert';
内容的提问来源于stack exchange,提问作者Cliff Odebala Clarke
相关产品推荐
相关产品推荐

