enough_media
An opinionated but extensible framework for media previews and interactions. This is useful for apps that handle a variety of media files. Originally motivated by creating a Flutter email app.
Getting Started
import 'package:enough_media/enough_media.dart';
- Create a
MediaProvider
, e.g.
UrlMediaProvider('funny.png', 'image/png', 'https://domain.com/resources/funny.png')
,AssetMediaProvider('funny.png', 'image/png', 'stuff/funny.png')
, orMemoryMediaProvider('funny.png', 'image/png', data)
// data is aUint8List
- Either build a
PreviewMediaWidget
or anInteractiveMediaWidget
. - Done :-)
Example
import 'package:enough_media/enough_media.dart';
import 'dart:typed_data';
import 'package:flutter/material.dart';
/// Preview media.
Widget buildPreview(String name, String mimeType, Uint8List data) {
final mediaProvider = MemoryMediaProvider(name, mimeType, data);
return PreviewMediaWidget(
mediaProvider: mediaProvider,
);
}
/// Provide interactive media, typically for near-fullscreen experiences:
Widget buildInteractive(String name, String mimeType, Uint8List data) {
final mediaProvider = MemoryMediaProvider(name, mimeType, data);
return InteractiveMediaWidget(
mediaProvider: mediaProvider,
);
}
/// Preview media and let enough_media move to the interactive experience with a Hero-based animation:
Widget buildPreviewWithShowInteractiveDelegate(
BuildContext context, String name, String mimeType, Uint8List data) {
final mediaProvider = MemoryMediaProvider(name, mimeType, data);
return PreviewMediaWidget(
mediaProvider: mediaProvider,
showInteractiveDelegate: (media) => Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => Scaffold(body: media))),
);
}
API Documentation
Check out the full API documentation at https://pub.dev/documentation/enough_media/latest/
Installation and Setup
Add this dependency your pubspec.yaml file:
dependencies:
enough_media: ^0.2.0
The latest version or enough_media
is .
For video setup please follow the instructions on https://pub.dev/packages/video_player.
Features and bugs
Please file feature requests and bugs at the issue tracker.
License
Licensed under the commercial friendly Mozilla Public License 2.0.
Libraries
- enough_media
- An opinionated but extensible collection of media widgets
- interactive/all_interactive_media
- interactive/audio_interactive_media
- interactive/image_interactive_media
- interactive/pdf_interactive_media
- interactive/video_interactive_media
- interactive_media_widget
- media_provider
- preview/all_preview
- preview/image_preview
- preview_media_widget
- widget_registry