/// Enum pour les tons de message (Dart 3.10 with enhanced members) enum MessageTone { fun('Fun', '😄'), serious('Sérieux', '💼'), normal('Normal', '✨'), oleOle('Olé Olé', '🔥'); final String displayName; final String emoji; const MessageTone(this.displayName, this.emoji); } /// Enum pour le style de texte enum TextStyleEnum { classic('Classique'), modern('Moderne'), playful('Ludique'); final String displayName; const TextStyleEnum(this.displayName); } /// Modèle de profil utilisateur (Dart 3.10) final class UserProfile { const UserProfile({ required this.profession, required this.tone, required this.textStyle, }); factory UserProfile.fromJson(Map json) => UserProfile( profession: json['profession'] as String? ?? '', tone: MessageTone.values.firstWhere( (e) => e.name == json['tone'], orElse: () => MessageTone.normal, ), textStyle: TextStyleEnum.values.firstWhere( (e) => e.name == json['textStyle'], orElse: () => TextStyleEnum.classic, ), ); final String profession; final MessageTone tone; final TextStyleEnum textStyle; /// Records pour extraction facile des données (String, MessageTone, TextStyleEnum) toRecord() => (profession, tone, textStyle); Map toJson() => { 'profession': profession, 'tone': tone.name, 'textStyle': textStyle.name, }; UserProfile copyWith({ String? profession, MessageTone? tone, TextStyleEnum? textStyle, }) => UserProfile( profession: profession ?? this.profession, tone: tone ?? this.tone, textStyle: textStyle ?? this.textStyle, ); @override String toString() => 'UserProfile(profession: $profession, tone: ${tone.displayName}, style: ${textStyle.displayName})'; }