No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

95 líneas
2.8KB

  1. import 'dart:io';
  2. /// Enum pour le type de média
  3. enum MediaType {
  4. image,
  5. video;
  6. String get label => name.toUpperCase();
  7. }
  8. /// Enum pour les plateformes sociales
  9. enum SocialPlatform {
  10. instagram('Instagram', '📸', 0xFFE4405F),
  11. facebook('Facebook', '👍', 0xFF1877F2),
  12. tiktok('TikTok', '🎵', 0xFF000000),
  13. twitter('X', '𝕏', 0xFF1DA1F2),
  14. linkedin('LinkedIn', '💼', 0xFF0A66C2);
  15. final String displayName;
  16. final String emoji;
  17. final int colorValue;
  18. const SocialPlatform(this.displayName, this.emoji, this.colorValue);
  19. }
  20. /// Modèle pour un post de contenu (Dart 3.10)
  21. final class ContentPost {
  22. /// Modèle pour un post de contenu (Dart 3.10)final class ContentPost {
  23. final File? originalMedia;
  24. final File? enhancedMedia;
  25. final MediaType mediaType;
  26. final String? generatedText;
  27. final bool includeEmojis;
  28. final bool includeCommercialInfo;
  29. final Set<SocialPlatform> selectedPlatforms;
  30. final DateTime createdAt;
  31. // CORRECTION 1 : Le mot-clé 'const' est retiré du constructeur.
  32. ContentPost({
  33. this.originalMedia,
  34. this.enhancedMedia,
  35. required this.mediaType,
  36. this.generatedText,
  37. this.includeEmojis = true,
  38. this.includeCommercialInfo = false,
  39. this.selectedPlatforms = const {},
  40. DateTime? createdAt,
  41. }) : createdAt = createdAt ?? DateTime.now(); // Cette ligne est maintenant valide.
  42. /// Utiliser records pour retourner plusieurs valeurs
  43. (File?, String?) getMediaAndText() => (enhancedMedia ?? originalMedia, generatedText);
  44. ContentPost copyWith({
  45. File? originalMedia,
  46. File? enhancedMedia,
  47. MediaType? mediaType,
  48. String? generatedText,
  49. bool? includeEmojis,
  50. bool? includeCommercialInfo,
  51. Set<SocialPlatform>? selectedPlatforms,
  52. // Note : On n'ajoute pas 'createdAt' dans les paramètres ici,
  53. // car on veut généralement conserver la date de création originale lors d'une copie.
  54. }) {
  55. return ContentPost(
  56. originalMedia: originalMedia ?? this.originalMedia,
  57. enhancedMedia: enhancedMedia ?? this.enhancedMedia,
  58. mediaType: mediaType ?? this.mediaType,
  59. generatedText: generatedText ?? this.generatedText,
  60. includeEmojis: includeEmojis ?? this.includeEmojis,
  61. includeCommercialInfo: includeCommercialInfo ?? this.includeCommercialInfo,
  62. selectedPlatforms: selectedPlatforms ?? this.selectedPlatforms,
  63. // CORRECTION 2 : On passe explicitement la date de création de l'objet actuel ('this').
  64. createdAt: this.createdAt,
  65. );
  66. }
  67. @override
  68. String toString() =>
  69. 'ContentPost(type: ${mediaType.label}, platforms: ${selectedPlatforms.length})';
  70. }
  71. /// Record pour les résultats d'API (Dart 3.10)
  72. typedef EnhancementResult = ({
  73. List<File> versions,
  74. DateTime processedAt,
  75. String? error,
  76. });
  77. typedef TextGenerationResult = ({
  78. List<String> proposals,
  79. DateTime generatedAt,
  80. String? error,
  81. });