file_picker_pro
一款 Flutter 插件,用于从任何设备的文件夹中选择文件,并使用相机拍摄新照片。
使用方法
要开始使用 Flutter,请查看我们的在线文档,其中提供了教程、示例、移动和 Web 开发指南以及完整的 API 参考。
安装
首先,将 file_picker_pro 添加为 pubspec.yaml 文件中的依赖项。
在您的 Flutter 项目中添加依赖项
dependencies:
...
file_picker_pro:
要开始使用 Flutter,请查看在线文档。
设置配置
- 请检查是否使用 cameraPicker {支持 Android、iOS、Web} image_picker 并具有图片裁剪功能 image_cropper。
- 请检查是否使用 imagePicker {支持 Android、iOS、Web} image_picker 并具有图片裁剪功能 image_cropper。
- 请检查是否使用 filePicker file_picker。
- 请检查是否使用 viewFile open_filex 或 open_share_plus。
Android
Android 实现支持在 Android 4.3 或更高版本上选择(多个)图片。
- 如果使用图片裁剪功能,请将 UCropActivity 添加到您的 AndroidManifest.xml 中。更多信息请查看 image_cropper。
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
注意:从 v1.2.0 开始,您需要将 Android 项目迁移到 v2 嵌入 (详情)
无需配置——该插件应即插即用。但强烈建议为 Android 内存不足时杀死应用程序做好准备。如何准备将在 image_picker 库的处理 Android 上的 MainActivity 销毁部分进行讨论。更多信息请查看 image_picker。
不再需要在 AndroidManifest.xml 的 <application> 标签中添加 android:requestLegacyExternalStorage="true" 属性,因为 file_picker_plus 已更新以使用作用域存储。
iOS
此插件需要 iOS 9.0 或更高版本。
iOS 实现使用 PHPicker 在 iOS 14 或更高版本上选择(多个)图片。由于实现了 PHPicker,因此在 iOS 14+ 的 iOS 模拟器上无法选择 HEIC 图片。这是一个已知问题。请在真实设备上进行测试,或在 Apple 解决此问题之前使用非 HEIC 图片进行测试。63426347 – Apple 已知问题
将以下键添加到您的 Info.plist 文件中,该文件位于 <project root>/ios/Runner/Info.plist
NSPhotoLibraryUsageDescription– 描述您的应用程序为何需要照片库权限。在可视化编辑器中,这称为*隐私 – 照片库使用描述*。NSCameraUsageDescription– 描述您的应用程序为何需要访问摄像头。在可视化编辑器中,这称为*隐私 – 摄像头使用描述*。NSMicrophoneUsageDescription– 如果您打算录制视频,请描述您的应用程序为何需要访问麦克风。在可视化编辑器中,这称为*隐私 – 麦克风使用描述*。
Web
- 如果使用图片裁剪功能,请将以下代码添加到
web/index.html文件中的<head>标签内。更多信息请查看 image_cropper。
<head>
....
<!-- Croppie -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.css" />
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.3.0/exif.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.min.js"></script>
....
</head>
注意:通过摄像头、图库或文件选择的文件将保存在您应用程序的本地缓存中,因此应预期它们仅是临时的。如果您需要永久存储所选图片,则您有责任将其移动到更永久的位置。
示例
请遵循这里的示例。
带默认 UI 的文件选择器
FilePicker(
context: context,
height: 100,
fileData: _fileData,
crop: true,
maxFileSizeInMb: 10,
allowedExtensions: Files.allowedAllExtensions,
onSelected: (fileData) {
_fileData = fileData;
},
onCancel: (message, messageCode) {
log("[$messageCode] $message");
}
)
相机选择器
Files.cameraPicker(
fileData: _fileData,
onSelected: (fileData) {
_fileData = fileData;
}
);
图片选择器
Files.imagePicker(
fileData: _fileData,
onSelected: (fileData) {
_fileData = fileData;
}
);
文件选择器
Files.filePicker(
fileData: _fileData,
onSelected: (fileData) {
_fileData = fileData;
}
);
