欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 优雅解决webview_flutter不支持安卓选择图片视频文件问题

优雅解决webview_flutter不支持安卓选择图片视频文件问题

2025/9/22 19:09:19 来源:https://blog.csdn.net/wgx8635/article/details/145228914  浏览:    关键词:优雅解决webview_flutter不支持安卓选择图片视频文件问题

这个问题,网上一搜索,就是要去修改别人写好的插件。 搞Flutter开发,尽量不要去修改别人的插件 ,特别是像 webview_flutter 这种比较大的官方插件。 相信我,你拿捏不了它。 

主要问题就是: webview_flutter 在安卓上加载H5,如果需要上传图片、视频、文件,就点击没反应。 

解决办法 : 

不要去修改 webview_flutter_android 插件,这非常得不优雅。

直接在Flutter端,我们的代码层解决就好了。 看我代码,

第一步,先判断是安卓端,才解决这个问题, 先找到 AndroidWebViewController

if (Platform.isAndroid) {final myAndroidController = _controller.platform as AndroidWebViewController;myAndroidController.setOnShowFileSelector(_androidFilePicker);}

*这里的  _controller , 就是 WebViewController。 

 第二步, 实现 _androidFilePicker 方法: 

Future<List<String>> _androidFilePicker(FileSelectorParams params) async {FilePickerResult? result = await FilePicker.platform.pickFiles();if (result != null) {String filePath = result.files.single.path!;String fileName = result.files.single.name;// Convert the file to base64List<int> fileBytes = await File(filePath).readAsBytes();//convert filepath into urifinal filePath1 = (await _getCacheDirectory()).uri.resolve(fileName);final file = await File.fromUri(filePath1).create(recursive: true);//convert file in bytesawait file.writeAsBytes(fileBytes, flush: true);return [file.uri.toString()];}return [];}Future<Directory> _getCacheDirectory() async {// Use path_provider to get the temporary directory (cache directory)return await getTemporaryDirectory();}

这样就可以解决了。 是不是非常得优雅, 

当然了,  这里使用了 FilePicker ,你也可替换成你想用的,比如 ImagePicker, 或者别的;

你也可以判断一下 FileSelectorParams ,根据不同类型,来选用不同的 图片、视频、文件选择器。 

搞Flutter,我个人非常不喜欢去修改插件,一个是麻烦,二是插件如果有更新,还要去注意自己改的东西有没有受影响,非常麻烦。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词