【问题标题】:Flutter- How to extract Retrofit api defination to separate files for cleaner code in dartFlutter-如何提取 Retrofit api 定义以分离文件以在 dart 中获得更清晰的代码
【发布时间】:2022-12-23 08:26:29
【问题描述】:

ApiClient.dart

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

import '../../../constants/links/urls_constant.dart';
part 'api_cilent.g.dart';
part './components/auth/registration_client.dart';

@RestApi()
abstract class ApiClient {
  factory ApiClient(
    Dio dio, {
    required String baseUrl,
  }) = _ApiClient;

  @POST(KUrl.login)
  @Headers({"Accept": "application/json"})
  @Headers({"Content-type": "application/json"})
  Future<HttpResponse<dynamic>> login();
}

我想将下面的代码提取到registration_client.dart

@POST(KUrl.login)
  @Headers({"Accept": "application/json"})
  @Headers({"Content-type": "application/json"})
  Future<HttpResponse<dynamic>> login();

怎么做?

我正在尝试使用 partpart of 但这对我不起作用......

part of '../../api_client.dart.dart';


  @POST(KUrl.login)
  @Headers({"Accept": "application/json"})
  @Headers({"Content-type": "application/json"})
  Future<HttpResponse<dynamic>> login({@Header("Authorization") required String authToken,});

我也尝试将它添加到一个函数中并在api_client 中调用它,但这对我也不起作用:/

我得到的错误是:

A function body must be provided.
Try adding a function body.dart(missing_function_body)

我在这里错过了什么或做错了什么?

【问题讨论】:

    标签: flutter api dart retrofit2 clean-architecture


    【解决方案1】:

    代码上的 @ 标签意味着某些代码生成器将查找该特定代码段以生成更多代码。我从未尝试将操作(@POST、@GET 等)与抽象类分开,但我相信您会收到该错误,因为这是不可能的……因为代码生成器可能正在寻找两者同一个班级。我想你必须遵循模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多