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 types
  • VideoContent - Video content with quality settings
  • ImageContent - Image content with resolution settings
  • AudioContent - Audio content with format and bitrate
  • InteractiveContent - Interactive applications
  • ContentLibrary - Content library container
  • ContentEvent - Content-related events

Enums

  • ContentType - video, image, audio, interactive
  • VideoQuality - sd, hd, fullHd, ultraHd
  • ImageResolution - low, medium, high, ultra
  • AudioFormat - mp3, wav, flac, aac

Services

  • FreeDomeContentService - Main content management service

Events

  • LibrariesLoadedEvent - Fired when libraries are loaded
  • ContentUploadedEvent - Fired when content is uploaded
  • ContentDeletedEvent - Fired when content is deleted

License

MIT License - see LICENSE file for details.