Flutter Deriv API is an abstraction layer over Binary WebSocket (https://github.com/binary-com/websockets) for Dart and Flutter developers.
Use APIInitializer to prepare API instance for dependency injection, you can pass true to isMock parameter for testing purposes.
APIInitializer().initialize();Establishing a connection to WebSocket needs an instance of the ConnectionInformation class for initializing API connection.
final BaseAPI api = Injector.getInjector().get<BaseAPI>();
api.connect(
ConnectionInformation(
appId: ...,
brand: ...,
endpoint: ...,
language: ...,
),
onDone: () async { ... },
onOpen: () async { ... },
printResponse: true,
);You can invoke API calls with either using classes in the abstraction layer (Ping, Order, Advert, ...) or directly with API calls from the BaseAPI class.
final Ping ping = await Ping.ping();
print(ping.succeeded);final BaseAPI api = Injector.getInjector().get<BaseAPI>();
final PingResponse response =
await api.call(request: const PingRequest());
print(response.ping);To prevent adding duplicate requests Subscription Manager applies some mechanism to compare and return a suitable result if a subscription request already exists.
By default, the subscription manager uses the Equatable package to compare the current request with the request pool. Sometimes you do not want to rely on the package, in that case you can add Compare Predicate to your call API, and compare your request with already existing requests in subscription manager.
You just need to define a Compare Predicate method to compare your request.
...
subscribeToSomeApiCall(request, comparePredicate: getComparePredicate);
...
bool getComparePredicate({
bool equatableResult,
PendingRequest<Response> pendingRequest,
Request request,
}) {
SomeRequest otherRequest = pendingRequest.request as SomeRequest;
SomeRequest currentRequest = request as SomeRequest;
return equatableResult && otherRequest.param01 == currentRequest.param01 && ...;
}The complete API reference is here.
$ git clone https://github.com/regentmarkets/flutter-deriv-api.git
$ cd flutter-deriv-api
$ flutter pub get
Add this to your package's pubspec.yaml file:
dependencies:
...
flutter_deriv_api:
git:
url: https://github.com/regentmarkets/flutter-deriv-api.git
ref: master
$ git submodule add https://github.com/regentmarkets/flutter-deriv-api.git
Add this to your package's pubspec.yaml file:
dependencies:
...
flutter_deriv_api:
path: ./flutter-deriv-api/
$ git submodule init
$ git submodule update --remote
$ flutter test
$ dartdoc
JsonSchemaParser class is a tool for extracting main and nested classes from model schema contents.
-
Call
getModels(Map<String, dynamic> schema)method and pass decoded schema to it. -
Pass the result of
getModelsmethod togetClasses(List<SchemaModel> models, String className)asmodelsparameter.
The final result is a string that contains the main class and all related classes of that schema file including Model Classes, Constructors, Properties and toJson(), fromJson(), copyWith() Methods.
$ flutter pub run lib/tools/parser.dart <json_schema_path> <main_class_name>
$ flutter pub run lib/tools/parser.dart active_symbols_receive.json ActiveSymbols
- This tool is for helping developers to convert JSON Schema easier, you may require some adjustments to the result file according to your needs.
- The resulting file will be generated in the same path as the JSON schema file.
- Some JSON schemas are not standard and this tool may not convert them properly.
