Browse Source
- 将`role`字段改为更明确的`isUser`布尔值 - 重命名`content`为`text`以提高可读性 - 添加`hasImage`和`imagePath`支持图片消息 - 新增`meta`字段用于存储卡片数据 - 将`isLoading`改为`isRecognizing`以更准确描述语音识别状态newdev_shunjiawei
1 changed files with 43 additions and 24 deletions
@ -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<String, dynamic> 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<String, dynamic> 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, |
|||
); |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue