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

Flutter中能否用Retrofit读取二进制文件?求方案或替代建议

可行方案:用Retrofit读取二进制文件

在Flutter中使用Retrofit读取二进制文件完全可行,核心是通过配置Retrofit的响应类型为二进制字节流来实现。

实现步骤

  1. 定义API接口
    在Retrofit的接口方法里,指定返回类型为Future<ResponseBody>,同时通过@Headers设置Accept头适配二进制类型(比如application/octet-stream),示例代码:

    import 'package:retrofit/retrofit.dart';
    import 'package:dio/dio.dart';
    
    @RestApi(baseUrl: "https://your-api-url.com")
    abstract class ApiService {
      factory ApiService(Dio dio, {String baseUrl}) = _ApiService;
    
      @GET("/binary-file")
      @Headers({"Accept": "application/octet-stream"})
      Future<ResponseBody> downloadBinaryFile();
    }
    
  2. 处理响应内容
    调用接口后,从ResponseBody中提取二进制字节数据,示例:

    final dio = Dio();
    final apiService = ApiService(dio);
    
    void fetchBinaryFile() async {
      try {
        final response = await apiService.downloadBinaryFile();
        // 获取二进制字节数组
        List<int> bytes = await response.stream.toBytes();
        // 后续可将bytes保存为本地文件或直接解析处理
      } catch (e) {
        // 处理请求异常
      }
    }
    

补充说明

Flutter的Retrofit基于Dio实现,因此可以直接复用Dio对二进制数据的支持。通过ResponseBody的stream属性能获取字节流,转换为字节数组后即可进行保存、解析等后续操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:05:21