Cod*_*oet 10 android android-webview dart flutter
我正在使用,flutter_webview_plugin: ^0.3.8但我有同样的问题webview_flutter: ^0.3.13。
在 webview 中,我想利用一个网站,该网站在成功完成验证码后触发文件下载。但是,我完成了验证码,没有任何反应,也没有下载。
Flutter 中是否有类似 webview 下载侦听器(“webview.setDownloadListener”)的东西?我只需要这个用于 Android。
如果没有,有没有办法从 Flutter 的 webview 下载文件?
类似的问题可以在这里找到!
\n\n您可以使用我的插件flutter_inappwebview,这是一个 Flutter 插件,允许您添加内联 WebView 或打开应用内浏览器窗口,并且有很多事件、方法和选项来控制 WebView。它可以识别Android(使用setDownloadListener)和iOS平台上的可下载文件!
我在这里报告我对类似问题给出的相同答案:
\n\n为了能够识别可下载的文件,您需要设置该useOnDownloadStart: true选项,然后您就可以监听onDownloadStart\xc2\xa0事件!
另外,例如,在 Android 上,您需要在AndroidManifest.xml文件中添加写入权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>\nRun Code Online (Sandbox Code Playgroud)\n\n然后,您需要使用permission_handler插件请求许可。相反,要有效下载文件,您可以使用flutter_downloader插件。
\n\n以下是使用http://ovh.net/files/(特别是http://ovh.net/files/1Mio.dat作为 URL)来测试下载的完整示例:
\n\nimport \'dart:async\';\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_inappwebview/flutter_inappwebview.dart\';\nimport \'package:flutter_downloader/flutter_downloader.dart\';\nimport \'package:path_provider/path_provider.dart\';\nimport \'package:permission_handler/permission_handler.dart\';\n\nFuture main() async {\n WidgetsFlutterBinding.ensureInitialized();\n await FlutterDownloader.initialize(\n debug: true // optional: set false to disable printing logs to console\n );\n await Permission.storage.request();\n runApp(new MyApp());\n}\n\nclass MyApp extends StatefulWidget {\n @override\n _MyAppState createState() => new _MyAppState();\n}\n\nclass _MyAppState extends State<MyApp> {\n InAppWebViewController webView;\n\n @override\n void initState() {\n super.initState();\n }\n\n @override\n void dispose() {\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Scaffold(\n appBar: AppBar(\n title: const Text(\'InAppWebView Example\'),\n ),\n body: Container(\n child: Column(children: <Widget>[\n Expanded(\n child: InAppWebView(\n initialUrl: "http://ovh.net/files/1Mio.dat",\n initialHeaders: {},\n initialOptions: InAppWebViewGroupOptions(\n crossPlatform: InAppWebViewOptions(\n debuggingEnabled: true,\n useOnDownloadStart: true\n ),\n ),\n onWebViewCreated: (InAppWebViewController controller) {\n webView = controller;\n },\n onLoadStart: (InAppWebViewController controller, String url) {\n\n },\n onLoadStop: (InAppWebViewController controller, String url) {\n\n },\n onDownloadStart: (controller, url) async {\n print("onDownloadStart $url");\n final taskId = await FlutterDownloader.enqueue(\n url: url,\n savedDir: (await getExternalStorageDirectory()).path,\n showNotification: true, // show download progress in status bar (for Android)\n openFileFromNotification: true, // click on notification to open downloaded file (for Android)\n );\n },\n ))\n ])),\n ),\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在这里,如您所见,我还使用path_provider插件来获取我想要保存文件的文件夹。
\n| 归档时间: |
|
| 查看次数: |
5847 次 |
| 最近记录: |