invoke method
Implementation
@override
String invoke(String method, params, InvokeModuleCallback callback) {
Uri uri = _resolveUri(method);
Map<String, dynamic> options = params;
_handleError(Object error, StackTrace? stackTrace) {
String errmsg = '$error';
if (stackTrace != null) {
errmsg += '\n$stackTrace';
}
callback(error: errmsg);
}
if (uri.host.isEmpty) {
// No host specified in URI.
_handleError('Failed to parse URL from $uri.', null);
} else {
HttpClientResponse? response;
NetworkOpItem? currentNetworkOp;
if (enableWebFProfileTracking) {
currentNetworkOp = WebFProfiler.instance.startTrackNetwork(uri.toString());
}
getRequest(uri, options['method'], options['headers'], options['body']).then((HttpClientRequest request) {
if (_disposed) return Future.value(null);
return request.close();
}).then((HttpClientResponse? res) {
if (res == null) {
return Future.value(null);
} else {
response = res;
return consolidateHttpClientResponseBytes(res);
}
}).then((Uint8List? bytes) {
if (bytes != null) {
callback(data: [EMPTY_STRING, response?.statusCode, bytes]);
} else {
throw FlutterError('Failed to read response.');
}
}).catchError(_handleError).then((value) {
if (enableWebFProfileTracking) {
WebFProfiler.instance.finishTrackNetwork(currentNetworkOp!);
}
});
}
return EMPTY_STRING;
}