file_picker_pro

一款 Flutter 插件,用于从任何设备的文件夹中选择文件,并使用相机拍摄新照片。

使用方法

要开始使用 Flutter,请查看我们的在线文档,其中提供了教程、示例、移动和 Web 开发指南以及完整的 API 参考。

安装

首先,将 file_picker_pro 添加为 pubspec.yaml 文件中的依赖项

在您的 Flutter 项目中添加依赖项

dependencies:
  ...
  file_picker_pro:

要开始使用 Flutter,请查看在线文档

设置配置

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;
  }
);

GitHub

查看 Github