addJsonJavaScriptHandler<TRequest, TResponse> method

void addJsonJavaScriptHandler<TRequest, TResponse>({
  1. required String handlerName,
  2. required JavaScriptBridgeRequestDecoder<TRequest> decodeRequest,
  3. required FutureOr<TResponse> callback(
    1. TRequest request
    ),
  4. required JavaScriptBridgeResponseEncoder<TResponse> encodeResponse,
})

Adds a handler whose request and response values are converted through explicit JSON-compatible codecs.

Implementation

void addJsonJavaScriptHandler<TRequest, TResponse>({
  required String handlerName,
  required JavaScriptBridgeRequestDecoder<TRequest> decodeRequest,
  required FutureOr<TResponse> Function(TRequest request) callback,
  required JavaScriptBridgeResponseEncoder<TResponse> encodeResponse,
}) {
  _controller.addJavaScriptHandler(
    handlerName: handlerName,
    callback: (args) async {
      final rawRequest = args.length == 1 ? args.first : args;
      final request = decodeRequest(rawRequest);
      final response = await callback(request);
      return encodeResponse(response);
    },
  );
}