パッケージ、リポジトリ、アプリカテゴリを検索

drishya_picker のカバー
パッケージ詳細v2.0.0

drishya_picker

Messengerのカメラとギャラリーからインスパイアされたアセットピッカー。

30日間ダウンロード
53
いいね数
92
Pub ポイント
60

パッケージをインストール

flutter pub add drishya_picker

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Drishya Pickerは、メッセージアプリのカメラおよびギャラリーインターフェースを参考にしたアセットピッカーを提供するFlutterパッケージです。クリーンで直感的なインターフェースにより、ユーザーが画像や動画を選択できるように設計されており、シームレスなメディア統合を実現します。Flutterで構築されており、カメラ撮影とギャラリー閲覧の間でのスムーズなナビゲーションをサポートしており、チャットやソーシャルメディアアプリに最適です。軽量で簡単に統合可能であり、広範なカスタマイズなしにモダンなユーザーエクスペリエンスを提供します。現在、プラットフォーム制限について明記されていないため、幅広い互換性があると考えられます。

用途

  • メディア共有機能付きチャットアプリ
  • ソーシャルメディア投稿の作成
  • ユーザーのプロフィール写真および動画のアップロード
  • コンテンツ作成ツール
  • メディア豊富なフォーム送信

主な機能

  • カメラとギャラリーの統合
  • Messenger風のUIデザイン
  • Flutter との簡単な統合
  • 軽量でパフォーマンスに優れる
  • 直感的なメディア選択フロー

適している対象

  • メッセージングアプリを開発する開発者
  • 迅速なメディアアップロードを必要とするアプリ
  • UI中心のマルチメディアピッカー
  • Flutterの初心者が完成済みコンポーネントを探している
  • ネイティブのようなピッカー体験を望むプロジェクト

注意事項

  • 明示的なプラットフォームサポートは記載されていません
  • 利用可能なドキュメントが限られている
  • カメラアクセスには追加の権限が必要な場合があります
  • 完全な機能を実現するために外部の依存関係に依存しています
  • まだ本番環境で広く採用されていない

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Drishya Picker

Platform Pub Package likes Forks


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 drishya picker used Photo Manager and Camera.


Table of contents


Installing

1. Add dependency

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

dependencies:
  drishya_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:drishya_picker/drishya_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 SlidableGallery to make gallery view slidable otherwise ignore it.
class PickerDemo extends StatelessWidget {
 late final GalleryController controller;
 
 ...

 @override
 Widget build(BuildContext context) {
   return SlidableGallery(
     controller: controller,
     child: Scaffold(
       body: ...
     ),
   );
 }
}
  1. GallerySetting can be used for extra setting while 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();
  }

    
  final _gallerySetting = GallerySetting(
      enableCamera: true,
      maximumCount: 10,
      requestType: RequestType.all,
      editorSetting: EditorSetting(colors: _colors, stickers: _stickers1),
      cameraSetting: const CameraSetting(videoDuration: Duration(seconds: 15)),
      cameraTextEditorSetting: EditorSetting(
        backgrounds: _defaultBackgrounds,
        colors: _colors.take(4).toList(),
        stickers: _stickers2,
      ),
      cameraPhotoEditorSetting: EditorSetting(
        colors: _colors.skip(4).toList(),
        stickers: _stickers3,
      ),
    );

  ...

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

  ...
}
  1. Using GalleryViewField similarly to flutter TextField to pick media. (Recommended approach, as creating and disposing of the controller has been already cared-of )
  • onChanged – triggered whenever a user select/unselect media

  • onSubmitted – triggered when a user is done with the selection

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

  2. Browse the example app for more in-depth implementation and customization.


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

カテゴリー

依存関係

依存関係一覧 6 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。