flutter - Flutter - 无法使用文件选择器访问 iOS 设备中的照片库
问题描述
请问,有没有人能帮助我理解为什么在 iOS 中我只能访问 iCloud 文件?我需要用户能够从设备库中访问文件(视频和图像)。我不确定这是否是权限问题,但在 info.plist 文件中我有这个:
<key>NSCameraUsageDescription</key>
<string>Allows you to take a picture</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allows you to record a voice</string>
<key>NSAppleMusicUsageDescription</key>
<string>Allows you to choose a music</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Allows you to choose a picture</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>fetch</string>
<string>processing</string>
<string>remote-notification</string>
</array>
在 Podfile 中,我也有这个:
目标 'Runner' 做 use_frameworks!
并在我的代码下方选择视频,最多5个文件,一一选择...
List<Files> _selectedFiles = [];
pickVideos() async {
if (_selectedFiles.length >= 5) {
Toast.show(t.maximumallowedsizehint, context);
return;
}
FilePickerResult result = await FilePicker.platform.pickFiles(
type: FileType.custom,
// allowCompression: true,
allowMultiple: true,
withData: false,
allowedExtensions: ['mp4'],
);
if (mounted) {
if (result != null) {
PlatformFile file = result.files.first;
print(file.name);
//print(file.bytes);
print(file.size);
print(file.extension);
print(file.path);
if (file.size > (1024 * 100)) {
Toast.show(t.maximumuploadsizehint, context);
return;
}
final filePath = await FlutterAbsolutePath.getAbsolutePath(file.path);
print("video absolute path " + filePath);
_selectedFiles.add(new Files(
link: filePath,
type: "video",
filetype: file.extension,
length: file.size,
thumbnail: "null"));
//genThumbnailFile(_selectedFiles.length - 1);
}
setState(() {});
}
感谢您的任何帮助。
解决方案
我已经联系了包所有者(Miguel Ruivo),他很乐意回答我提供解决方案。
而不是使用 FileType.custom
FilePickerResult result = await FilePicker.platform.pickFiles(type: FileType.custom);
使用 FileType.media:
FilePickerResult result = await FilePicker.platform.pickFiles(type: FileType.media);
这解决了我的问题!
推荐阅读
- mysql - Woocommerce 订单列表总计使用 mysql 查询
- python - 使用带有地图的 ThreadPoolExecutor 获取错误
- .net - 在 Angular 重建时丢失 API JWT 身份验证
- amazon-web-services - 如何在没有 HDFS 或 EMR 引导步骤的情况下在所有工作节点上创建文件
- javascript - class{} 中的 Constructor():为什么需要它?
- java - 为什么我的 GlassFish Intellij 项目没有“看到”我的页面(JSP/CSS)?
- reactjs - 处理表单事件
- sql - 如何编写插入函数或查询
- c# - 使用 Task.WaitAll 方法而不是 await 关键字
- mysql - 为什么sequelize 寻找一个不存在的列?即使我已经明确定义了我想要的外键