diff --git a/lib/data/models/message_model.dart b/lib/data/models/message_model.dart index 94aebc3ac..aef99cbc9 100644 --- a/lib/data/models/message_model.dart +++ b/lib/data/models/message_model.dart @@ -1,58 +1,77 @@ class Message { - final String role; // 'user' or 'assistant' - final String content; - final DateTime timestamp; - final bool isLoading; + final bool isUser; //标识信息是否来自用户还是AI + final String text; //信息文本内容 + final DateTime timestamp; // 消息时间戳 + final bool isRecognizing; // 是否为语音识别中的临时消息 + final bool hasImage; // 是否包含图片 + final String? imagePath; // 图片路径 + final Map? meta; //卡片数据 Message({ - required this.role, - required this.content, - required this.timestamp, - this.isLoading = false, - }); + // 构造函数 + required this.isUser, + required this.text, + DateTime? timestamp, + this.isRecognizing = false, + this.hasImage = false, + this.imagePath, + this.meta, + }) : this.timestamp = timestamp ?? DateTime.now(); // 从JSON构造函数 factory Message.fromJson(Map json) { return Message( - role: json['role'] as String, - content: json['content'] as String, + isUser: json['isUser'] as bool, + text: json['text'] as String, timestamp: DateTime.parse(json['timestamp'] as String), - isLoading: json['isLoading'] as bool? ?? false, + isRecognizing: json['isRecognizing'] as bool? ?? false, + hasImage: json['hasImage'] as bool? ?? false, + imagePath: json['imagePath'] as String?, + meta: json['meta'] as Map?, ); } // 转换为JSON Map toJson() { return { - 'role': role, - 'content': content, + 'isUser': isUser, + 'text': text, 'timestamp': timestamp.toIso8601String(), - 'isLoading': isLoading, + 'isRecognizing': isRecognizing, + 'hasImage': hasImage, + 'imagePath': imagePath, + 'meta': meta, }; } // 创建一个加载中的消息 factory Message.loading() { return Message( - role: 'assistant', - content: '', + isUser: false, + text: '', timestamp: DateTime.now(), - isLoading: true, + isRecognizing: true, ); } // 复制并修改 Message copyWith({ - String? role, - String? content, + bool? isUser, + String? text, DateTime? timestamp, - bool? isLoading, + bool? isRecognizing, + bool? hasImage, + String? imagePath, + Map? meta, }) { return Message( - role: role ?? this.role, - content: content ?? this.content, + isUser: isUser ?? this.isUser, + text: text ?? this.text, timestamp: timestamp ?? this.timestamp, - isLoading: isLoading ?? this.isLoading, + isRecognizing: isRecognizing ?? this.isRecognizing, + hasImage: hasImage ?? this.hasImage, + imagePath: imagePath ?? this.imagePath, + meta: meta ?? this.meta, ); } }