代码之家  ›  专栏  ›  技术社区  ›  Marcin Szałek

iOS上Flutter中的单图像选择器未经许可

  •  0
  • Marcin Szałek  · 技术社区  · 3 年前

    根据这些问题: UIImagePickerController not asking for permission No permission to pick a photo from the photo library

    如果你想在iOS上选择一张图片,你不必请求许可,因为该应用程序实际上并没有访问图库。
    然而,我找不到一种方法,Flutter。套餐如 ImagePicker 总是请求许可。

    有人在未经许可的情况下在iOS上的Flutter中成功地选择了图像吗?

    0 回复  |  直到 3 年前
        1
  •  3
  •   user16930239    3 年前

    来自Apple文档:

    PHPickerViewController是一个新的选择器,它取代了UIImagePickerController。它的用户界面与照片应用程序的用户界面相匹配,支持搜索和多选照片和视频,并提供流畅的内容缩放。因为系统在一个单独的进程中管理其生命周期,默认情况下是私有的。用户不需要明确授权你的应用程序来选择照片,这会带来更简单、更流畅的用户体验。

    这个 library 使用 PHPickerViewController 如所见 here

        2
  •  2
  •   Sverrisson    3 年前

    老人 UIImagePickerController 允许在较旧的iOS上使用它,但自iOS 14以来,它已被弃用。

    这个 Flutter ImagePicker 插件在iOS代码中使用了PHPicker,正如我在Github上检查他们的代码一样,它允许你在不请求权限的情况下从用户那里挑选图像。我强烈推荐使用这个插件。

        3
  •  0
  •   Mithson    3 年前

    尝试 file_picker 它应该对你有用,因为它支持所有平台,包括支持各种文件类型的IOS和Mac,你可以指定自定义文件类型,也可以限制你的文件选择,还可以从中挑选文件 云(GDrive、Dropbox、iCloud) ...

    首先添加最新 file_picker 作为你的依赖 pubspec.yaml 文件。

    导入此依赖关系 在文件中,无论你想在哪里使用,然后你就可以去了。。。

    要选择单个文件,请使用以下代码 :

    FilePickerResult? result = await FilePicker.platform.pickFiles();
    
    if (result != null) {
      File file = File(result.files.single.path);
    } else {
      // User canceled the picker
    }
    

    带有扩展名过滤器的文件 :

    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['jpg', 'pdf', 'doc'],
    );
    

    您可以找到详细的用法 Here

    你可以找到文档 Here