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

如何手动创建Dart http.Response<T>实例 解决泛型参数声明报错问题

错误原因

官方 http 包提供的 Response 类本身没有泛型参数,你手动为它添加 <MyModel> 泛型声明不符合类的定义,所以会触发编译报错。

解决步骤

  • 首先确认你代码里定义返回值 Future<Response<MyModel>> 用到的泛型 Response<T> 的来源:
    • 如果是Dio等第三方网络库提供的泛型Response,直接引入对应库的Response类构造实例即可,不要引入官方http包的Response:
      import 'package:dio/dio.dart';
      
      // 构造Dio的泛型Response
      var response = Response<MyModel>(
        data: MyModel.fromJson(data),
        statusCode: 200,
      );
      
    • 如果是你项目内自行封装的业务层泛型Response类,直接调用你封装类的构造方法,将序列化后的字符串、状态码、解析完成的MyModel实例传入即可:
      // 示例为你自己封装的Response类构造
      var response = Response<MyModel>(
        body: json.encode(data),
        statusCode: 200,
        data: MyModel.fromJson(data),
      );
      
  • 如果你实际使用的就是官方http包的无泛型Response,只是需要绑定模型数据做返回,你可以自行封装一层泛型包装类,不要直接修改官方Response的用法:
    // 自定义泛型包装
    class CustomResponse<T> {
      final Response rawHttpResponse;
      final T? parsedData;
      CustomResponse(this.rawHttpResponse, this.parsedData);
    }
    
    // 构造实例
    final rawResp = Response(json.encode(data), 200);
    final response = CustomResponse<MyModel>(rawResp, MyModel.fromJson(data));
    

按以上方式构造完成的实例就可以直接用在Mockito的模拟返回逻辑中,不需要引入http.testing相关依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:01