目前我有这些代码:
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();