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


