【问题标题】:Disable long press for Flutter WebView禁用 Flutter WebView 的长按
【发布时间】:2021-05-14 09:39:10
【问题描述】:

我正在寻找一种方法来禁用颤振 WebView 包的长按手势: https://pub.dev/packages/webview_flutter

我发现通过将 Web 视图包装在 GestureDetector 中,我可以防止这种情况发生,效果很好。但是,第一次长按后,在 web 视图中滚动不再正常工作。

很抱歉,如果之前已经回答过这个问题,但我找不到任何关于如何执行此操作的信息,也找不到自己解决问题的方法。

提前感谢任何帮助/建议

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    好的,经过反复试验,我终于弄明白了

    基本上,您需要设置和重用 WebViewController(这是在 onWebViewCreated 中设置的),然后在 onPageFinished 内部,您可以使用该控制器上的 evaluateJavascript 函数注入您的 JavaScript 字符串。

    import 'dart:async';
    
    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';
    
    class Example extends StatefulWidget {
      @override
      ExampleState createState() => ExampleState();
    }
    
    class ExampleState extends State<Example> {
      final Completer<WebViewController> _controller = Completer<WebViewController>();
    
      WebViewController _webViewController;
    
      String jsString = 'document.addEventListener("contextmenu", event => event.preventDefault());';
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: WebView(
            initialUrl: 'Your URL goes here',
            javascriptMode: JavascriptMode.unrestricted,
            gestureNavigationEnabled: false,
            onWebViewCreated: (WebViewController webViewController) async {
              _webViewController = webViewController;
              _controller.complete(webViewController);
            },
            onPageFinished: (_) {
              _webViewController.evaluateJavascript(jsString);
            },
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 2022-12-18
      • 2019-02-07
      • 2018-08-27
      • 2014-11-13
      相关资源
      最近更新 更多