我已经创建了一个webviewscaffold,但不能从它下载任何东西,而从webview浏览,我做了,但当我点击按钮,它什么也不做。我不知道从哪里开始,就像在其他可以下载和预览的浏览器中一样,我试图在这里实现同样的事情。
class AppState extends State<App> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
Align(
alignment: Alignment(1, 1),
child: Container(
child: Web(), // it is a statefulwidget that have WebviewScaffold, i have created it on a new page and imported/used here
),
),
Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 20.0),
)
],
),
Align(
alignment: Alignment(0.7, -0.93),
child: FloatingActionButton(
tooltip: "Share",
child: Icon(
Icons.share,
color: Colors.amberAccent,
),
onPressed: () {
_onShareTap();
}),
),
],
),
);
}
我希望,当我点击WebView中的打印或下载按钮时,它应该像任何其他浏览器一样工作。
2条答案
按热度按时间3df52oht1#
你可以使用我的插件flutter_inappwebview,这是一个Flutter插件,允许你添加内联WebView或打开应用内浏览器窗口,并有很多事件,方法和选项来控制WebView。
为了能够识别可下载的文件,您需要设置
useOnDownloadStart: true
选项,然后您可以侦听onDownloadStart
事件!此外,例如,在Android上,您需要在
AndroidManifest.xml
文件中添加写入权限:然后,您需要使用permission_handler插件请求权限。相反,为了有效地下载文件,您可以使用flutter_downloader插件。
下面是使用http://ovh.net/files/(特别是http://ovh.net/files/1Mio.dat作为URL)测试下载的完整示例:
在这里,正如你所看到的,我还使用path_provider插件来获取我想要保存文件的文件夹。
r8xiu3jd2#
如果你是html页面的所有者,你可以检查适用于我的变通方法。在您的html页面的源代码中添加 onclick 函数,用于特定资源链接:
在Flutter代码中添加监听器:
launchURL将在外部浏览器窗口中打开预定义的URL。所以你可以从flutter_webview_plugin下载pdf/etc。