flutter_freedome_content
FreeDome content management library for Flutter applications.
Features
- Content library management
- Multiple content types (video, image, audio, interactive)
- Content upload and download
- Search and filtering
- Content metadata management
- Integration with FreeDome connectivity
Installation
Add this to your package's pubspec.yaml file:
dependencies:
flutter_freedome_content: ^1.0.0
flutter_freedome_connectivity: ^1.0.0
Usage
Content Service
import 'package:flutter_freedome_content/flutter_freedome_content.dart';
final contentService = FreeDomeContentService(baseUrl: 'https://api.example.com');
// Get all libraries
final libraries = await contentService.getLibraries();
// Get content from a library
final content = await contentService.getContentItems('library_id');
// Upload new content
final videoContent = VideoContent(
id: 'unique_id',
name: 'My Video',
videoUrl: 'https://example.com/video.mp4',
duration: Duration(minutes: 5),
quality: VideoQuality.hd,
metadata: {'category': 'tutorial'},
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
final contentId = await contentService.uploadContent('library_id', videoContent);
Content Types
// Video content
final video = VideoContent(
id: 'video_1',
name: 'Sample Video',
videoUrl: 'https://example.com/video.mp4',
duration: Duration(minutes: 10),
quality: VideoQuality.fullHd,
metadata: {'resolution': '1920x1080'},
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
// Image content
final image = ImageContent(
id: 'image_1',
name: 'Sample Image',
imageUrl: 'https://example.com/image.jpg',
resolution: ImageResolution.high,
metadata: {'format': 'JPEG'},
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
// Audio content
final audio = AudioContent(
id: 'audio_1',
name: 'Sample Audio',
audioUrl: 'https://example.com/audio.mp3',
duration: Duration(minutes: 3),
format: AudioFormat.mp3,
bitrate: 320,
metadata: {'genre': 'music'},
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
Search Content
// Search by query
final results = await contentService.searchContent(
query: 'tutorial',
type: ContentType.video,
tags: ['education', 'beginner'],
);
// Search in specific library
final libraryResults = await contentService.searchContent(
libraryId: 'library_123',
type: ContentType.image,
);
API Reference
Models
ContentItem- Base class for all content typesVideoContent- Video content with quality settingsImageContent- Image content with resolution settingsAudioContent- Audio content with format and bitrateInteractiveContent- Interactive applicationsContentLibrary- Content library containerContentEvent- Content-related events
Enums
ContentType- video, image, audio, interactiveVideoQuality- sd, hd, fullHd, ultraHdImageResolution- low, medium, high, ultraAudioFormat- mp3, wav, flac, aac
Services
FreeDomeContentService- Main content management service
Events
LibrariesLoadedEvent- Fired when libraries are loadedContentUploadedEvent- Fired when content is uploadedContentDeletedEvent- Fired when content is deleted
License
MIT License - see LICENSE file for details.