import 'dart:io'; /// Enum pour le type de média enum MediaType { image, video; String get label => name.toUpperCase(); } /// Enum pour les plateformes sociales enum SocialPlatform { instagram('Instagram', '📸', 0xFFE4405F), facebook('Facebook', '👍', 0xFF1877F2), tiktok('TikTok', '🎵', 0xFF000000), twitter('X', '𝕏', 0xFF1DA1F2), linkedin('LinkedIn', '💼', 0xFF0A66C2); final String displayName; final String emoji; final int colorValue; const SocialPlatform(this.displayName, this.emoji, this.colorValue); } /// Modèle pour un post de contenu (Dart 3.10) final class ContentPost { /// Modèle pour un post de contenu (Dart 3.10)final class ContentPost { final File? originalMedia; final File? enhancedMedia; final MediaType mediaType; final String? generatedText; final bool includeEmojis; final bool includeCommercialInfo; final Set selectedPlatforms; final DateTime createdAt; // CORRECTION 1 : Le mot-clé 'const' est retiré du constructeur. ContentPost({ this.originalMedia, this.enhancedMedia, required this.mediaType, this.generatedText, this.includeEmojis = true, this.includeCommercialInfo = false, this.selectedPlatforms = const {}, DateTime? createdAt, }) : createdAt = createdAt ?? DateTime.now(); // Cette ligne est maintenant valide. /// Utiliser records pour retourner plusieurs valeurs (File?, String?) getMediaAndText() => (enhancedMedia ?? originalMedia, generatedText); ContentPost copyWith({ File? originalMedia, File? enhancedMedia, MediaType? mediaType, String? generatedText, bool? includeEmojis, bool? includeCommercialInfo, Set? selectedPlatforms, // Note : On n'ajoute pas 'createdAt' dans les paramètres ici, // car on veut généralement conserver la date de création originale lors d'une copie. }) { return ContentPost( originalMedia: originalMedia ?? this.originalMedia, enhancedMedia: enhancedMedia ?? this.enhancedMedia, mediaType: mediaType ?? this.mediaType, generatedText: generatedText ?? this.generatedText, includeEmojis: includeEmojis ?? this.includeEmojis, includeCommercialInfo: includeCommercialInfo ?? this.includeCommercialInfo, selectedPlatforms: selectedPlatforms ?? this.selectedPlatforms, // CORRECTION 2 : On passe explicitement la date de création de l'objet actuel ('this'). createdAt: this.createdAt, ); } @override String toString() => 'ContentPost(type: ${mediaType.label}, platforms: ${selectedPlatforms.length})'; } /// Record pour les résultats d'API (Dart 3.10) typedef EnhancementResult = ({ List versions, DateTime processedAt, String? error, }); typedef TextGenerationResult = ({ List proposals, DateTime generatedAt, String? error, });