flutter_freedome_content

1.2.0+ is a facade over freedome_client. New code should use the client directly — see doc/migration-to-freedome_client.md.

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

NativeMindNONC — see the LICENSE file.

Commercial use → NativeMind sales (https://nativemind.net)

Libraries

flutter_freedome_content
FreeDome content 1.2.0 — a facade over freedome_client ContentRepository (libraries = asset tags library:<id>). See doc/migration-to-freedome_client.md.
generated/app_localizations
generated/app_localizations_en
generated/app_localizations_hi
generated/app_localizations_ru
generated/app_localizations_th