패키지, 저장소 및 앱 카테고리 검색

likk_picker 표지
패키지 상세v1.1.5+1

likk_picker

Photo Manager에서 가져온 카메라 및 갤러리 선택기. Facebook 메신저의 사용자 지정 뷰입니다. (이미지 피커, 카메라, 갤러리 리더)

30일 다운로드
44
좋아요
60
Pub 점수
50

패키지 설치

flutter pub add likk_picker

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

likk_picker는 Facebook Messenger의 미디어 선택 인터페이스를 영감으로 삼아 만든 사용자 정의 가능한 이미지 피커를 제공하는 Flutter 패키지입니다. Photo Manager 라이브러리 위에 구축되어 있으며, 로컬 스토리지에서 이미지를 선택하고 관리하거나 디바이스 카메라를 통해 새 이미지를 촬영할 수 있습니다. 커스텀 UI 컴포넌트를 지원하여, 세련되고 네이티브처럼 느껴지는 미디어 선택 경험을 필요로 하는 앱에 적합합니다. 자산 검색을 간소화하면서도 개발자가 피커의 외관과 동작을 맞춤 설정할 수 있는 유연성을 유지합니다.

사용 사례

  • 소셜 미디어 앱 사진 업로드
  • 채팅 애플리케이션 미디어 공유
  • 사용자 프로필 이미지 선택
  • 콘텐츠 생성 도구
  • 전자상거래 제품 이미지 캡처
  • 다중 이미지 선택 워크플로우

주요 기능

  • 카메라 및 갤러리 통합
  • 페이스북 메신저와 유사한 사용자 정의 가능한 UI
  • 여러 이미지 선택을 지원합니다
  • Photo Manager 라이브러리 기반
  • 경량이며 통합이 쉬움
  • 크로스 플랫폼 호환성

적합한 대상

  • 채팅 인터페이스를 구축하는 개발자
  • 직관적인 미디어 선택기 필요 앱
  • 사용자 정의 미디어 선택 UI가 필요한 프로젝트
  • 사용자 생성 콘텐츠에 초점을 맞춘 모바일 앱
  • 표준 이미지 선택기의 가벼운 대안을 원하는 팀

고려 사항

  • 카메라 및 저장소에 대한 플랫폼별 권한이 필요합니다
  • 이미지 자산에 한정됨(비디오 지원 없음)
  • 외부 사진 관리 라이브러리에 의존합니다
  • 완전한 사용자 지정을 위해 추가 스타일링이 필요할 수 있습니다
  • 내장된 이미지 편집 기능 없음

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Likk Picker

Platform Pub Package likes Forks

Buy Me A Coffee

A flutter package which is clone of facebook messenger gallery picker and camera, combined as single component. Gallery view and Camera view can also be use as Flutter widget. Under the hood likk picker used Photo Manager and Camera.


Table of contents


Installing

1. Add dependency

Add this to your package's pubspec.yaml file:

dependencies:
  likk_picker: ^latest_version
2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter pub get
3. Import it

Now in your Dart code, you can use:

import 'package:likk_picker/likk_picker.dart';

Platform Setup

For more details (if needed) you can go through Photo Manager and Camera readme section as well.

Android

Change the minimum Android sdk version to 21 (or higher) in your android/app/build.gradle file.

minSdkVersion 21

Required permissions: INTERNET, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, ACCESS_MEDIA_LOCATION. If you don't need the ACCESS_MEDIA_LOCATION permission, see Disable ACCESS_MEDIA_LOCATION permission.

glide

Android native use glide to create image thumb bytes, version is 4.11.0.

If your other android library use the library, and version is not same, then you need edit your android project's build.gradle.

rootProject.allprojects {

    subprojects {
        project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                if (details.requested.group == 'com.github.bumptech.glide'
                        && details.requested.name.contains('glide')) {
                    details.useVersion '4.11.0'
                }
            }
        }
    }
}

And, if you want to use ProGuard, you can see the ProGuard of Glide.

Remove Media Location permission

Android contains ACCESS_MEDIA_LOCATION permission by default.

This permission is introduced in Android Q. If your app doesn't need this permission, you need to add the following node to the Android manifest in your app.

<uses-permission
  android:name="android.permission.ACCESS_MEDIA_LOCATION"
  tools:node="remove"
  />

If you found some warning logs with Glide appearing, then the main project needs an implementation of AppGlideModule. See Generated API.

IOS

Add following content to info.plist.

<key>NSPhotoLibraryUsageDescription</key>
<string>Replace with your permission description..</string>
<key>NSCameraUsageDescription</key>
<string>Replace with your permission description..</string>
<key>NSMicrophoneUsageDescription</key>
<string>Replace with your permission description..</string>

Gallery

  1. Use GalleryViewWrapper to make gallery view collapsible otherwise ignore it.
class PickerDemo extends StatelessWidget {
 late final GalleryController controller;
 
 ...

 @override
 Widget build(BuildContext context) {
   return GalleryViewWrapper(
     controller: controller,
     child: Scaffold(
       body: ...
     ),
   );
 }
}
  1. GalleryController can be used for extra setting and picking media.
  • Using pick() function on controller to pick media.
class PickerDemo extends StatelessWidget {
  late final GalleryController controller;

  @override
  void initState() {
    super.initState();
    controller = GalleryController(
      gallerySetting: const GallerySetting(
        albumSubtitle: 'Collapsable',
        enableCamera: true,
        maximum: 10,
        requestType: RequestType.all,
      ),
      panelSetting: const PanelSetting(topMargin: 24.0),
    );
  }

  ...

  onPressed : () async {
    final entities = await controller.pick();
  }

  ...
}
  1. Using GalleryViewField similarly as flutter TextField to pick media.
  • onChanged – triggered every time user select/unselect media

  • onSubmitted – triggered when user done with selection

GalleryViewField(
  selectedEntities: [],
  onChanged: (entity, isRemoved) {
     ...
  },
  onSubmitted: (list) {
     ...
  }
  child: const Icon(Icons.camera),
),
  1. You can also use GalleryView as a Widget.

Camera

  1. Using pick() function on CameraView to pick media.
  ...
  onPressed : () async {
    final entity = await CameraView.pick();
  }
  ...
  1. Using CameraViewField similarly as flutter TextField to pick media.
  • onCapture – triggered when photo/video capture completed
GalleryViewField(
  onCapture: (entity) {
     ...
  },
  child: const Icon(Icons.camera),
),
  1. You can also use CameraView as a Widget.

Bugs or Requests

If you encounter any problems feel free to open an issue. If you feel the library is missing a feature, please raise a ticket on GitHub and I'll look into it. Pull request are also welcome.


Maintainers

Donate

카테고리

의존성

의존성 목록 5 개

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.