setWebConfig method

dynamic setWebConfig()

Implementation

setWebConfig() async {
  late final PlatformWebViewControllerCreationParams params;
  if (WebViewPlatform.instance is WebKitWebViewPlatform) {
    params = WebKitWebViewControllerCreationParams(
      allowsInlineMediaPlayback: true,
      mediaTypesRequiringUserAction: const <PlaybackMediaTypes>{},
      limitsNavigationsToAppBoundDomains: true,
    );
  } else {
    params = const PlatformWebViewControllerCreationParams();
  }

  webviewController = WebViewController.fromPlatformCreationParams(params)
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..setBackgroundColor(Colors.white)
    ..setNavigationDelegate(
      NavigationDelegate(
        onPageFinished: (String url) {
          debugPrint("加载完成: $url");
          if (errorText.isEmpty) {
            setState(() {
              canRun = true;
              for (final msg in messageQueue) {
                toStandard(msg);
              }
              messageQueue.clear();
            });
            uploadPermission();
          }
        },
      ),
    )
    ..setOnScrollPositionChange((ScrollPositionChange position) {
      if (position.x != 0 || position.y != 0) {
        webviewController?.scrollTo(0, 0);
      }
    })
    ..addJavaScriptChannel(
      'a',
      onMessageReceived: (JavaScriptMessage message) {
        Future.delayed(const Duration(milliseconds: 0), () {
          if (canRun) {
            toStandard(message.message);
          } else {
            messageQueue.add(message.message);
          }
        });
      },
    )
    ..setOverScrollMode(WebViewOverScrollMode.never);

  Map<String, String> headers = {"Z-Web-Frame-Ver": "v1.1.0"};
  await webviewController!.loadRequest(Uri.parse(url), headers: headers);
}