addSerializedJavaScriptHandler<TRequest, TResponse> method
Adds a handler for a JSON string payload and serializes its response.
This is useful when an existing page contract sends one serialized JSON argument rather than a structured JavaScript object.
Implementation
void addSerializedJavaScriptHandler<TRequest, TResponse>({
required String handlerName,
required TRequest Function(Object? value) decodeRequest,
required FutureOr<TResponse> Function(TRequest request) callback,
required Object? Function(TResponse response) encodeResponse,
}) {
addJsonJavaScriptHandler<TRequest, TResponse>(
handlerName: handlerName,
decodeRequest: (rawRequest) {
final serialized = rawRequest is String
? rawRequest
: jsonEncode(rawRequest);
return decodeRequest(jsonDecode(serialized));
},
callback: callback,
encodeResponse: (response) => jsonEncode(encodeResponse(response)),
);
}