Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Flatter webview中启用下载_Flutter_Webview - Fatal编程技术网

Flutter 如何在Flatter webview中启用下载

Flutter 如何在Flatter webview中启用下载,flutter,webview,Flutter,Webview,我是新来的。我正在开发一款手机应用程序,可以显示网站的某些页面,其中一个页面有一个链接,用户/访问者可以通过该链接下载PDF文件。这个链接在我尝试过的大多数常规浏览器中都可以使用,但当我在应用程序中单击它时,它就不起作用了。我正在使用“WebviewScaffold”显示页面。请问我该如何解决这个问题。 谢谢Flatter webview目前正在开发者预览中,还有很多功能尚未开发,包括下载文件。 如果下载在普通浏览器中有效,您可能希望使用该软件包而不是webview在手机浏览器中打开url并下载

我是新来的。我正在开发一款手机应用程序,可以显示网站的某些页面,其中一个页面有一个链接,用户/访问者可以通过该链接下载PDF文件。这个链接在我尝试过的大多数常规浏览器中都可以使用,但当我在应用程序中单击它时,它就不起作用了。我正在使用“WebviewScaffold”显示页面。请问我该如何解决这个问题。
谢谢

Flatter webview目前正在开发者预览中,还有很多功能尚未开发,包括下载文件。
如果下载在普通浏览器中有效,您可能希望使用该软件包而不是webview在手机浏览器中打开url并下载它。

可以找到类似的问题并!我在此报告的内容与我对类似问题的报告相同:

您可以使用my plugin,它是一个Flatter插件,允许您添加内联网络视图或打开应用程序内浏览器窗口,并具有许多事件、方法和选项来控制网络视图。它可以识别Android(使用
setDownloadListener
)和iOS平台中的可下载文件

为了能够识别可下载的文件,您需要设置
useOnDownloadStart:true
选项,然后可以侦听
onDownloadStart
事件

此外,例如,在Android上,您需要在
AndroidManifest.xml
文件中添加写入权限:


然后,您需要使用插件请求许可。相反,为了有效地下载您的文件,您可以使用插件

下面是一个使用(特别是as URL)测试下载的完整示例:

导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“包:flatter_inappwebview/flatter_inappwebview.dart”;
进口“包装:颤振_下载器/颤振_下载器.dart”;
导入“package:path_provider/path_provider.dart”;
导入“package:permission_handler/permission_handler.dart”;
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待下载。初始化(
debug:true//可选:设置false以禁用将日志打印到控制台
);
等待权限.storage.request();
runApp(新的MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
inappwebview控制器webView;
@凌驾
void initState(){
super.initState();
}
@凌驾
无效处置(){
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text('InAppWebView示例'),
),
主体:容器(
子项:列(子项:[
扩大(
子:InAppWebView(
初始URL:“http://ovh.net/files/1Mio.dat",
initialHeaders:{},
initialOptions:InAppWebViewGroupOptions(
跨平台:InAppWebViewOptions(
debuggingEnabled:true,
useOnDownloadStart:true
),
),
onWebViewCreated:(InAppWebViewController){
网络视图=控制器;
},
onLoadStart:(InAppWebViewController控制器,字符串url){
},
onLoadStop:(InAppWebViewController控制器,字符串url){
},
onDownloadStart:(控制器,url)异步{
打印(“onDownloadStart$url”);
final taskId=wait downloader.enqueue(
url:url,
savedDir:(等待getExternalStorageDirectory()).path,
showNotification:true,//在状态栏中显示下载进度(适用于Android)
openFileFromNotification:true,//单击通知打开下载的文件(适用于Android)
);
},
))
])),
),
);
}
}
在这里,正如你所看到的,我还使用插件来获取我想要保存文件的文件夹