搜索插件、代码仓与 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 项

源码仓库

使用此插件的项目

暂无相关数据。