Flutter中webview添加图片的长按操作

开发过程工我们会用webview显示一些活动或是变动比较频繁的页面,若是webview中包含图片,一般会有保存图片的需求,我们可以采用js交互的形式获取图片的url,话不多说直接看操作

/// 这个手势要加在整个webview上

GestureDetector(
        onLongPressStart: (LongPressStartDetails longPress) async {
          String imgUrl =
              'document.elementFromPoint(${longPress.localPosition.dx}, ${longPress.localPosition.dy}).src';
          webViewController.evaluateJavascript(imgUrl).then((value) async {
            if (value.safeString.length > 0 &&
                value.safeString.startsWith('http')) {
              print('我获取到了====$value'); 
            }
          });
        },
        child:WebView())

获取点击位置的element,中的src值,即可

补充问题
1、在安卓设备上发现长按手势并没有调用,翻看 webview_flutter发现需要设置安卓的类型,展示webview之前设置

if (Platform.isAndroid) {
    WebView.platform = SurfaceAndroidWebView();
  }

2、获取到的url也就是开始返回的value值,安卓会带有”“,需要自行去掉

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容