Flutter 如何使用retrofitgenerator插件

我在Flutter项目中尝试使用retrofit_generator插件来自动生成API请求代码,但遇到了一些问题。首先,我已经按照文档添加了依赖项和build_runner,但在运行flutter pub run build_runner build命令时总是报错。其次,我对于如何正确编写retrofit接口的定义也有疑问,特别是处理复杂请求参数和自定义header的部分。另外,生成的代码似乎无法正确处理错误响应。有没有熟悉这个插件的大佬能分享一下完整的使用流程和常见问题的解决方案?最好能提供一些实际的代码示例。

2 回复
  1. pubspec.yaml 添加依赖:

    dependencies:
      retrofit: ^4.0.0
    dev_dependencies:
      retrofit_generator: ^4.0.0
      build_runner: ^2.0.0
    
  2. 创建 API 接口,使用 @RestApi() 注解。

  3. 运行生成代码:

    flutter pub run build_runner build
    
  4. 在代码中调用生成的 API 客户端。

更多关于Flutter 如何使用retrofitgenerator插件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 retrofitretrofit_generator 插件可以简化 HTTP API 请求的代码编写。以下是详细步骤:

1. 添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  retrofit: ^4.0.1
  dio: ^5.0.0

dev_dependencies:
  retrofit_generator: ^8.0.0
  build_runner: ^2.4.0

运行 flutter pub get 安装依赖。

2. 创建 API 接口

创建一个 Dart 文件(例如 api_service.dart),使用注解定义 API 接口:

import 'package:retrofit/retrofit.dart';
import 'package:dio/dio.dart';

part 'api_service.g.dart';

@RestApi(baseUrl: "https://jsonplaceholder.typicode.com/")
abstract class ApiService {
  factory ApiService(Dio dio, {String baseUrl}) = _ApiService;

  @GET("/posts/{id}")
  Future<Post> getPost(@Path("id") int id);
}

3. 生成代码

在终端运行以下命令生成代码:

flutter pub run build_runner build

这会生成 api_service.g.dart 文件,包含具体的实现代码。

4. 使用 API 服务

在代码中调用生成的 API 方法:

final dio = Dio();
final apiService = ApiService(dio);

void fetchPost() async {
  try {
    final post = await apiService.getPost(1);
    print(post.title);
  } catch (e) {
    print("Error: $e");
  }
}

注意事项:

  • 确保 baseUrl 正确,且接口路径以 / 开头。
  • 支持 @GET@POST@PUT@DELETE 等注解。
  • 使用 @Path@Query@Body 等处理参数。

通过以上步骤,即可高效使用 Retrofit 风格处理 HTTP 请求。

回到顶部