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

Flutter中使用Retrofit搭配Dio时如何设置API请求的responseType

实现方案

Retrofit for Dio 支持两种常用方案实现单接口指定responseType为bytes,不需要手动修改生成的代码:

方案1:方法注解直接配置(无侵入调用侧)

直接在接口方法上加@Headers注解指定响应类型,生成代码时会自动把该配置合并到RequestOptions中:

import 'package:dio/dio.dart';

@GET(API.blah_blah)
@Headers(<String, dynamic>{
  "responseType": ResponseType.bytes
})
// 返回值直接指定为Uint8List,不需要用dynamic
Future<Uint8List> getSomething();

该方案不需要修改调用侧代码,生成的请求代码会自动带上responseType: ResponseType.bytes配置。

方案2:参数传递Options(灵活适配多场景)

如果需要在调用时动态切换响应类型,可以把Options作为接口参数传入:

@GET(API.blah_blah)
Future<Uint8List> getSomething({@Options() required Options options});

调用时传入对应配置即可:

final result = await api.getSomething(
  options: Options(responseType: ResponseType.bytes)
);

补充说明

  • 如果需要全局配置所有接口的响应类型,可以在初始化Dio实例时统一设置:
    final dio = Dio(BaseOptions(
      responseType: ResponseType.bytes
    ));
    
  • 不要手动修改retrofit_generator生成的代码,每次重新build都会覆盖手动修改的内容
  • 返回值指定为Uint8List即可直接拿到二进制数据,不需要额外做类型转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:05