handleMethod method

Future handleMethod(
  1. MethodCall call
)

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");
  }
}