|
- 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 {
-
- // CORRECTION 1 : Le mot-clé 'const' est retiré du constructeur.
- ContentPost({
- required this.mediaType, this.originalMedia,
- this.enhancedMedia,
- this.generatedText,
- this.includeEmojis = true,
- this.includeCommercialInfo = false,
- this.selectedPlatforms = const {},
- DateTime? createdAt,
- }) : createdAt = createdAt ?? DateTime.now();
- /// 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<SocialPlatform> selectedPlatforms;
- final DateTime createdAt; // 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<SocialPlatform>? 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.
- }) => 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: createdAt,
- );
-
- @override
- String toString() =>
- 'ContentPost(type: ${mediaType.label}, platforms: ${selectedPlatforms.length})';
- }
-
-
- /// Record pour les résultats d'API (Dart 3.10)
- typedef EnhancementResult = ({
- List<File> versions,
- DateTime processedAt,
- String? error,
- });
-
- typedef TextGenerationResult = ({
- List<String> proposals,
- DateTime generatedAt,
- String? error,
- });
|