handleMethod method
Implementation
Future<dynamic> handleMethod(MethodCall call) async {
final controller = params.webviewParams?.controllerFromPlatform != null
? params.webviewParams!.controllerFromPlatform!(this)
: this;
switch (call.method) {
case 'onLoadStart':
if (params.webviewParams?.onLoadStart != null) {
String? url = call.arguments['url'];
params.webviewParams!.onLoadStart!(
controller,
url != null ? WebUri(url) : null,
);
}
break;
case 'onLoadStop':
if (params.webviewParams?.onLoadStop != null) {
String? url = call.arguments['url'];
params.webviewParams!.onLoadStop!(
controller,
url != null ? WebUri(url) : null,
);
}
break;
case 'onReceivedError':
if (params.webviewParams?.onReceivedError != null) {
String? url = call.arguments['url'];
int code = call.arguments['code'];
String message = call.arguments['message'];
params.webviewParams!.onReceivedError!(
controller,
WebResourceRequest(url: url != null ? WebUri(url) : WebUri('')),
WebResourceError(
type:
WebResourceErrorType.fromNativeValue(code) ??
WebResourceErrorType.UNKNOWN,
description: message,
),
);
}
break;
case 'onProgressChanged':
if (params.webviewParams?.onProgressChanged != null) {
int progress = call.arguments['progress'];
params.webviewParams!.onProgressChanged!(controller, progress);
}
break;
case 'onUpdateVisitedHistory':
if (params.webviewParams?.onUpdateVisitedHistory != null) {
String? url = call.arguments['url'];
bool? isReload = call.arguments['isReload'];
params.webviewParams!.onUpdateVisitedHistory!(
controller,
url != null ? WebUri(url) : null,
isReload,
);
}
break;
case 'onTitleChanged':
if (params.webviewParams?.onTitleChanged != null) {
String? title = call.arguments['title'];
params.webviewParams!.onTitleChanged!(controller, title);
}
break;
case 'shouldOverrideUrlLoading':
// Linux might not support this fully yet, but we'll include it.
if (params.webviewParams?.shouldOverrideUrlLoading != null) {
Map<String, dynamic> arguments = call.arguments
.cast<String, dynamic>();
var navigationAction = NavigationAction.fromMap(
arguments['navigationAction'].cast<String, dynamic>(),
)!;
var policy = await params.webviewParams!.shouldOverrideUrlLoading!(
controller,
navigationAction,
);
return policy?.toNativeValue() ??
NavigationActionPolicy.CANCEL.toNativeValue();
}
return NavigationActionPolicy.ALLOW.toNativeValue();
case 'onConsoleMessage':
if (params.webviewParams?.onConsoleMessage != null) {
var consoleMessage = ConsoleMessage.fromMap(
call.arguments.cast<String, dynamic>(),
)!;
params.webviewParams!.onConsoleMessage!(controller, consoleMessage);
}
break;
default:
throw UnimplementedError("Unimplemented ${call.method} method");
}
}