media_source 0.2.0-alpha.3
media_source: ^0.2.0-alpha.3 copied to clipboard
Handle media from files, memory, or network with automatic type detection and cross-platform file operations.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0-alpha.3 #
Added #
- Comprehensive inline documentation for all public APIs
- Class-level documentation for all media types and sources
- Method and constructor documentation with parameter descriptions
- Property documentation explaining purpose and usage
- Usage examples in doc comments
- Extensibility documentation
- Guide for creating custom media types by extending
FileTypeImpl - Guide for creating custom media sources by extending
MediaSource<M> - Example implementations in library docs and README
- Guide for creating custom media types by extending
- Complete example file (
example/main.dart) demonstrating:- Working with file, memory, and network media sources
- Type-safe pattern matching with fold
- Converting between different source types
- Creating custom media types and sources
- Platform utilities documentation
- Documented
PlatformUtilsfacade pattern - IO and web implementation documentation
- Cross-platform file operation guides
- Documented
- Extension methods documentation
FileExtensionsonXFilewith usage examplesUriExtensionsfor file name extractionObjectExtensionfor safe type casting
Changed #
- Enhanced library-level documentation in
media_source.dart- Added comprehensive feature list
- Added usage examples for all source types
- Added pattern matching examples
- Included extensibility section with custom type example
- Improved README.md
- Added motivation section inspired by Flutter's
ImageProvider - Added extensibility section with practical examples
- Added quick start link to example file
- Better organization of features and usage patterns
- Added motivation section inspired by Flutter's
Documentation #
- All public classes now have comprehensive doc comments
- All public methods include parameter and return value documentation
- IDE tooltips and generated docs are now complete
- Code comments explain design patterns (fold, facade, etc.)
Fixed #
- WASM compatibility issue by updating conditional import from
dart.library.htmltodart.library.js_interop- Package is now compatible with WASM runtime
- Maintains backward compatibility with web and native platforms
0.2.0-alpha.2 #
Added #
- Comprehensive test coverage achieving 99.7% coverage
- Tests for
UrlMediaclass with bothUriand.url()constructors - Tests for
.url()constructors in all network media types - Test for
FileMediaSourcefold method callback - Test for
DocumentTypefold method callback - Test for
UrlTypefold method callback - Test for
stringifyproperty inMemoryMediaSource - Test for
propsproperty inFileMediaSource - Test for
moveTo()when target file already exists - Extended documentation in main library file with usage examples
Changed #
- Refactored
DurationMediafrom abstract class with constructor to interface-only (getter pattern) - Simplified
VideoFileMedia.fromFile()to use inline null-coalescing instead of try-catch - Improved
FileMediaSource.fromPath()to explicitly handle size parameter conversion - Removed unused
dart:developerimport fromfile_media_source.dart
Fixed #
- All test assertions now use direct comparison instead of deprecated
equals()matcher - Error handling in file operations now more consistent across media types
Testing #
- Added 13 new test cases across multiple test files
- Total test count: 157 tests (155 passing, 2 skipped)
- Test coverage improved from ~91% to 99.7%
- Comprehensive coverage of all media source types and operations
0.1.0-alpha.1 - 2025-11-03 #
Added #
- Initial release of the
media_sourcepackage - Core
MediaSourceabstraction for handling different media sources FileMediaSourceimplementation for local file system access- Support for file operations (delete, exists, size)
- Automatic MIME type detection
MemoryMediaSourceimplementation for in-memory media data- Support for
Uint8Listbyte arrays - MIME type detection from byte headers
- Support for
NetworkMediaSourceimplementation for remote URL media- URL validation and parsing
- Automatic media type detection from URLs
MediaTypeclassification system with subtypes:ImageType- for image filesAudioType- for audio files with duration supportVideoType- for video files with duration supportDocumentType- for PDF documentsUrlType- for URL referencesOtherType- for unclassified files
- Media type detection from:
- File paths using MIME type lookup
- MIME type strings
- Byte data headers
- File utilities (
file_util.dart):getMimeTypeFromPath()- detect MIME from file pathgetMimeTypeFromBytes()- detect MIME from byte datagetFileMetadata()- extract duration and MIME from media filesgetFileMetadataFromBytes()- extract metadata from byte arrays
- MIME groups utility (
mime_groups.dart):- Extension to
MediaTypemapping derived frommimepackage - Grouped extension sets by media type
- Pre-built sets:
imageExtensions,audioExtensions,videoExtensions,documentExtensions,otherExtensions - Helper functions:
mediaTypeForExtension()- get MediaType from file extensionisExtensionOfType()- check if extension matches a MediaType
- Runtime classification of all extensions from the
mimepackage's default extension map
- Extension to
- Cross-platform support:
- Platform-specific utilities for web and native (IO)
- Conditional imports for Flutter web compatibility
- File extensions on
XFile:delete()- delete file with existence checksize()- get file sizeexists()- check file existencemediaType- get MediaType from filename- get file name from path
- Comprehensive test suite:
MediaTypetests for classification and type detectionMemoryMediaSourcetestsNetworkMediaSourcetests with URL validation- Test fixtures and sample files
Features #
- ๐ฏ Type-safe media source abstraction
- ๐ Support for file, memory, and network media sources
- ๐ Automatic media type detection from paths, MIME types, and bytes
- ๐ Cross-platform support (Flutter mobile, web, desktop)
- ๐ Comprehensive MIME type to media type mapping
- ๐งฉ Extension-based media type lookup utilities
- ๐งช Test coverage for core functionality
- ๐ Built on
cross_filefor cross-platform file handling - โก Lightweight with minimal dependencies