現時点では、次のコードがあります。
import 'package:chopper/chopper.dart';
part 'first_api.chopper.dart';
@ChopperApi(baseUrl: '')
abstract class FirstApi extends ChopperService {
@Get(path: '/api/v1/mobile/first/')
Future<Response> getFirsts();
static FirstApi create() {
final client = ChopperClient(
baseUrl: 'http://10.0.2.2:8081',
services: [
_$FirstApi(),
],
converter: JsonConverter(),
);
return _$FirstApi(client);
}
}
と
import 'package:chopper/chopper.dart';
part 'second_api.chopper.dart';
@ChopperApi(baseUrl: '')
abstract class SecondApi extends ChopperService {
@Get(path: '/api/v1/mobile/second/')
Future<Response> getSeconds();
static SecondApi create() {
final client = ChopperClient(
baseUrl: 'http://10.0.2.2:8081',
services: [
_$SecondApi(),
],
converter: JsonConverter(),
);
return _$SecondApi(client);
}
}
次に、次のように呼び出します。
FirstApi.getInstance().getFirsts();
SecondApi.getInstance().getSeconds();
しかし、複数のサービスを受け入れていることがわかります...
services: [
_$SecondApi(),
],
どうにかしてコード量を減らすことはできますか? (そうでない場合は、このようなクラスをさらに 5 つ行うことになります...)
可能であれば、どのように、どのように使用しますか?
編集:
それはこのように動作します:
サービスを作成します。例:
ファイル: test_api.dart
import 'package:chopper/chopper.dart';
part 'test_api.chopper.dart';
@ChopperApi(baseUrl: '/')
abstract class TestApi extends ChopperService {
@Get(path: '/modified/{modified}')
Future<Response> getData(@Path('modified') String modified);
static TestApi create([ChopperClient? client]) => _$TestApi(client);
}
クライアントを作成します。
class CustomChopperClient {
static Future<ChopperClient> createChopperClient() {
final client = ChopperClient(
baseUrl: "http://example.com",
services: [
TestApi.create(),
TestApiTwo.create(),
],
interceptors: [],
converter: JsonConverter(),
);
return client;
}
}
次に、次のようにサービスを使用できます。
ChopperClient chopperClient = CustomChopperClient.createChopperClient();
TestApi testApi = chopperClient.getService<TestApi>();
TestApiTwo testApiTwo = chopperClient.getService<TestApiTwo>();
// now you can call the getData() that you created in the TestApi service
testApi.getData();