|
-
- /// 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<String, dynamic> 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<String, dynamic> toJson() => <String, dynamic>{
- '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})';
- }
|