使用file_preview可以像在使用Flutter weidget一样在andorid、ios页面中预览doc、docx、ppt、pptx、xls、xlsx、pdf等文件。
- andorid使用腾讯TBS服务,支持doc、docx、ppt、pptx、xls、xlsx、pdf、txt、epub文件的预览
- ios使用WKWebView,WKWebView所支持的均可预览
在线预览的文件链接必须是.pdf等文件格式结尾的链接可正常预览
格式 | android | ios |
---|---|---|
.doc | ✅ | ✅ |
.docx | ✅ | ✅ |
.ppt | ✅ | ✅ |
.pptx | ✅ | ✅ |
.xls | ✅ | ✅ |
.xlsx | ✅ | ✅ |
✅ | ✅ |
1、TBS初始化失败
https://docs.qq.com/doc/DYW9QdXJNWFZnbVdz
file_preview: ^1.1.1
import 'package:file_preview/file_preview.dart';
由于使用android使用TBS服务,所以必须在FilePreviewWidget使用前完成初始化,不然无法加载。 如本地无TBS不存在会在初始化时进行下载,会耗时3-30秒左右
以下二选一,自动初始化失败时可进行手动初始化
await FilePreview.initTBS();
android目录下新建App继承FilePreviewApp
class App : FilePreviewApp() {
}
AndroidManifest.xml文件中修改
<application
...
android:name=".App"
...>
</application>
andorid在build.gradle中开启删除无用资源,打包后如果遇到apk无法加载TBS内核库,可以尝试如下设置(非必须)
buildTypes {
release {
//关闭删除无用资源
shrinkResources false
//关闭删除无用代码
minifyEnabled false
zipAlignEnabled true
}
}
//使用前进行判断是否已经初始化
var isInit = await FilePreview.tbsHasInit();
if (!isInit) {
await FilePreview.initTBS();
return;
}
FilePreviewWidget(
width: 400,//宽
height: 700,//高
path: "",//file path or http url
)
andorid预览在线文件需要先将文件下载到本地/data/user/0/com.gstory.file_preview_example/files/file_preview/目录下, 可以通过以下方法删除缓存
await FilePreview.deleteCache();
高版本andorid、ios默认禁用http,可以设置打开防止文件加载失败
- Android
android/app/src/main/res/xml下新建network_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>
在android/app/src/main/AndroidManifest.xml中使用
<application
android:networkSecurityConfig="@xml/network_config">
- ios
ios/Runner/Info.plist中
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
https://gstory.vercel.app/ceshi/ceshi.docx
https://gstory.vercel.app/ceshi/ceshi.pdf
https://gstory.vercel.app/ceshi/ceshi.xlsx
https://gstory.vercel.app/ceshi/ceshi.txt
https://gstory.vercel.app/ceshi/ceshi.pptx
插件 | 地址 |
---|---|
穿山甲广告插件 | flutter_unionad |
腾讯优量汇广告插件 | flutter_tencentad |
聚合广告插件 | flutter_universalad |
百度百青藤广告插件 | flutter_baiduad |
字节穿山甲内容合作插件 | flutter_pangrowth |
文档预览插件 | file_preview |
滤镜 | gpu_image |
-
Email: gstory0404@gmail.com