搜尋套件、儲存庫與 APP 分類

media_picker_widget 封面
套件詳情v1.0.7

media_picker_widget

一個從儲存中選擇媒體檔案的元件,並允許您將其放置在小部件樹中的任何位置。

近 30 天下載
65
喜歡數
61
Pub 分數
35

安裝套件

flutter pub add media_picker_widget

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個Flutter widget,旨在讓使用者從裝置儲存空間中選擇媒體檔案。它可以放置在widget樹中的任何位置,提供靈活的UI整合方式。該widget以最少的樣板程式碼處理檔案選擇,支援多種媒體類型,如圖片和影片。它提供一個乾淨、可重用的介面來選取媒體,無需深入了解平台特定知識。非常適合需要以簡單、一致方式實現媒體輸入功能的應用。

適用情境

  • 將媒體選擇整合到表單中
  • 允許使用者上傳照片或影片
  • 建構內容創作工具
  • 向個人資料編輯螢幕添加媒體選擇器
  • 建立畫廊或相冊介面

主要特色

  • 可在整個 widget 樹中重用
  • 簡單整合,設定最少
  • 支援多種媒體類型
  • 輕量級並專注於核心功能
  • 無需平台特定程式碼即可運作

適合對象

  • 開發媒體密集型應用的開發者
  • 需要使用者上傳內容的應用
  • 需要靈活媒體選擇的UI元件
  • 注重簡潔性與可重用性的專案

使用建議

  • 不包含媒體處理功能
  • 僅限基本檔案選擇
  • 無內建預覽或裁切
  • 需要手動處理檔案路徑
  • 取決於底層平台權限

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

media_picker_widget

Build Build

A widget that picks media files from storage and allows you to place it anywhere in the widget tree. You can use this widget in a dialog, bottom sheet, or anywhere else as you wish. It supports picking single or multiple images or videos. Use the PickerDecoration class to decorate the UI.

Demo

If you find this widget useful, consider supporting the developer by buying them a coffee.

Buy Me A Coffee

Installation

Add the following line to your pubspec.yaml file:

media_picker_widget: $latest_version

The latest version of the package is Build

Android

To use this widget on Android, you need to add the following permissions to your AndroidManifest.xml file, located in <project root>/android/app/src/main/AndroidManifest.xml:

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

If your app targets Android SDK 33, as mentioned in the Android 13 Behavior changes, you have to add the following permissions as well:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
iOS

This plugin requires iOS 9.0 or higher.

Starting with version 0.8.1 the iOS implementation uses PHPicker to pick (multiple) images on iOS 14 or higher. As a result of implementing PHPicker it becomes impossible to pick HEIC images on the iOS simulator in iOS 14+. This is a known issue. Please test this on a real device, or test with non-HEIC images until Apple solves this issue. 63426347 - Apple known issue

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

  • NSPhotoLibraryUsageDescription - describe why your app needs permission for the photo library. This is called Privacy - Photo Library Usage Description in the visual editor.
  • NSCameraUsageDescription - describe why your app needs access to the camera. This is called Privacy - Camera Usage Description in the visual editor.
  • NSMicrophoneUsageDescription - describe why your app needs access to the microphone, if you intend to record videos. This is called Privacy - Microphone Usage Description in the visual editor.

Usage

Firstly, import in dart code:

import 'package:media_picker_widget/media_picker_widget.dart';

To use the media_picker_widget, follow these steps:

  1. Make sure your app's minSdkVersion is set to 21 in the app/build.gradle file.

  2. Within your Flutter widget tree, simply add the MediaPicker widget, which extends StatefulWidget. Here's an example:

MediaPicker(
  mediaList: mediaList, //let MediaPicker know which medias are already selected by passing the previous mediaList
  onPicked: (selectedList){
    print('Got Media ${selectedList.length}');
  },
  onCancel: ()=> print('Canceled'),
  mediaCount: MediaCount.single,
  mediaType: MediaType.image,
  decoration: PickerDecoration(),
)
Customization

Customize the widget as needed. You can use the PickerDecoration class to decorate the UI.

Custom Header

New header customization have been added. MediaPicker widget has HeaderBuilder property. You can pass a HeaderBuilder to customize the header. HeaderBuilder is a function that returns a Widget. You can use HeaderBuilder to customize the header as you wish. You can use MediaPickerHeader class to get the default header. MediaPickerHeader class has a MediaPickerHeaderProps class that takes MediaPicker properties as parameters. You can use MediaPickerHeaderProps class to customize the header. Like this,

MediaPicker(
  mediaList: mediaList, //let MediaPicker know which medias are already selected by passing the previous mediaList
  onPick: (selectedList){
    print('Got Media ${selectedList.length}');
  },
  onCancel: ()=> print('Canceled'),
  mediaCount: MediaCount.single,
  mediaType: MediaType.image,
  decoration: PickerDecoration(),
  headerBuilder: (context, albumPicker, onDone, onCancel) {
   return SizedBox(
      height: 46.0,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          TextButton(onPressed: onDone, child: const Text('Back')),
          Expanded(child: Center(child: albumPicker)),
          TextButton(onPressed: onDone, child: const Text('Done')),
        ],
      ),
    );
  },
)

For more Information about the Classes, Enums, Functions etc, visit API Reference.

Dependencies

This package depends on the following packages :

所屬分類

依賴

依賴清單 3 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。