FLUTTER ECOSYSTEM

mbfakourii/full_picker

Um pacote Flutter que ajuda você a selecionar arquivos em diferentes modos

Capa do projeto seletor_completo
Stars
7
Forks
10
Último push (UTC)
1 de ago. de 2025
Status do projeto
Ativo
Mohammad Bagher Fakouri GitHub avatar
GITHUB User

Mohammad Bagher Fakouri ↗

Senior Developer and Data Science

Gilan, IranSite oficial ↗
LinguagensDartC++CMakeHTMLSwiftCKotlinObjective-C

Tópicos técnicos

Pacotes publicados por este repositório

Dependências usadas

Lista de dependências 18 itens

README original

Texto original em inglês. Visite o GitHub para a versão atual.

Expandir / recolher README

logo

Full picker

pub package
A Flutter package that helps you select files in different modes

Features

  • Multi File picker
  • Video Compressor
  • Image Cropper
  • Custom Camera
  • Custom Name For Files
  • Voice recorder
  • URL picker
  • Support Material 1,2,3

Example App

https://raw.githubusercontent.com/mbfakourii/full_picker/master/example/screenshots/example.gif

Usage

Quick simple usage example:

FullPicker(
  context: context,
  prefixName: "test",
  file: true,
  image: true,
  video: true,
  videoCamera: true,
  imageCamera: true,
  voiceRecorder: true,
  videoCompressor: false,
  imageCropper: false,
  multiFile: true,
  url: true,
  onError: (int value) {
    print(" ----  onError ----=$value");
  },
  onSelected: (value) {
    print(" ----  onSelected ----");
  },
);

and use minSdkVersion 21 in your Module-level build.gradle file

Video Compressor

If you need to compress the video (only support Android And IOS), add the following

iOS

Add the following to your Info.plist file, located in <project root>/ios/Runner/Info.plist:

<key>NSPhotoLibraryUsageDescription</key>
<string>${PRODUCT_NAME} library Usage</string>
Android

Add the following permissions in AndroidManifest.xml:

API < 29

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"/>

API >= 29

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Include this in your Project-level build.gradle file:

allprojects {
    repositories {
        .
        .
        .
        maven { url 'https://jitpack.io' }
    }
}

Include this in your Module-level build.gradle file:

implementation 'com.github.AbedElazizShe:LightCompressor:1.0.0

Image Cropper

If you need to crop the image (only support Android And IOS), add the following

Android
  • Add UCropActivity into your AndroidManifest.xml
<activity
    android:name="com.yalantis.ucrop.UCropActivity"
    android:screenOrientation="portrait"
    android:theme="@style/Ucrop.CropTheme"/>
iOS
  • No configuration required

Voice Recorder

If you need to voice recorder, add the following

Android
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- Optional, you'll have to check this permission by yourself. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

min SDK: 19 (maybe higher => encoder dependent)

iOS
<key>NSMicrophoneUsageDescription</key>
<string>We need to access to the microphone to record audio file</string>

min SDK: 11.0

macOS
<key>NSMicrophoneUsageDescription</key>
<string>We need to access to the microphone to record audio file</string>

Multi Language

There is a possibility of customization for different languages in this package

FullPickerLanguage language = FullPickerLanguage.copy(
    camera: S.current.camera,
    selectFile: S.current.selectFile,
    file: S.current.file,
    voiceRecorder: S.current.voiceRecorder,
    url: S.current.url,
    enterURL: S.current.enterURL,
    cancel: S.current.cancel,
    ok: S.current.ok,
    gallery: S.current.gallery,
    cropper: S.current.cropper,
    onCompressing: S.current.onCompressing,
    tapForPhotoHoldForVideo: S.current.tapForPhotoHoldForVideo,
    cameraNotFound: S.current.cameraNotFound,
    noVoiceRecorded: S.current.noVoiceRecorded,
    denyAccessPermission: S.current.denyAccessPermission);
    
FullPicker(
  ...
  language: language,
  ...
);   

S For intl Package

Getting Started

For help getting started with Flutter, view our online documentation.

For help on editing plugin code, view the documentation.