開發(fā)過(guò)程工我們會(huì)用webview顯示一些活動(dòng)或是變動(dòng)比較頻繁的頁(yè)面,若是webview中包含圖片,一般會(huì)有保存圖片的需求,我們可以采用js交互的形式獲取圖片的url,話不多說(shuō)直接看操作
/// 這個(gè)手勢(shì)要加在整個(gè)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())
獲取點(diǎn)擊位置的element,中的src值,即可
補(bǔ)充問(wèn)題
1闸餐、在安卓設(shè)備上發(fā)現(xiàn)長(zhǎng)按手勢(shì)并沒有調(diào)用矾芙,翻看 webview_flutter發(fā)現(xiàn)需要設(shè)置安卓的類型舍沙,展示webview之前設(shè)置
if (Platform.isAndroid) {
WebView.platform = SurfaceAndroidWebView();
}
2剔宪、獲取到的url也就是開始返回的value值壹无,安卓會(huì)帶有”“感帅,需要自行去掉