提交 056bceaf authored 作者: songchuancai's avatar songchuancai

增加打字机效果

上级 a60101b5
...@@ -154,22 +154,31 @@ class _HomePageState extends State<HomePage> { ...@@ -154,22 +154,31 @@ class _HomePageState extends State<HomePage> {
try { try {
String fullResponse = ''; String fullResponse = '';
bool isFirstChunk = true; bool isFirstChunk = true;
// 创建一个缓冲区来存储收到的文本
StringBuffer buffer = StringBuffer();
await for (final chunk in openAIService.chatGPTAPI(userMessage)) { await for (final chunk in openAIService.chatGPTAPI(userMessage)) {
setState(() { buffer.write(chunk);
fullResponse += chunk; // 逐字显示文本
if (isFirstChunk) { for (int i = fullResponse.length; i < buffer.length; i++) {
messages.add(ChatMessage( setState(() {
text: fullResponse, fullResponse += buffer.toString()[i];
isUserMessage: false, if (isFirstChunk && i == 0) {
)); messages.add(ChatMessage(
isFirstChunk = false; text: fullResponse,
} else { isUserMessage: false,
messages.last = ChatMessage( ));
text: fullResponse, isFirstChunk = false;
isUserMessage: false, } else {
); messages.last = ChatMessage(
} text: fullResponse,
}); isUserMessage: false,
);
}
});
// 添加短暂延迟以创建打字效果
await Future.delayed(const Duration(milliseconds: 50));
}
} }
await systemSpeak(fullResponse); await systemSpeak(fullResponse);
await _updateCurrentConversation(); await _updateCurrentConversation();
...@@ -191,22 +200,32 @@ class _HomePageState extends State<HomePage> { ...@@ -191,22 +200,32 @@ class _HomePageState extends State<HomePage> {
try { try {
String fullResponse = ''; String fullResponse = '';
bool isFirstChunk = true; bool isFirstChunk = true;
// 创建一个缓冲区来存储收到的文本
StringBuffer buffer = StringBuffer();
await for (final chunk in openAIService.chatGPTAPI(userInput)) { await for (final chunk in openAIService.chatGPTAPI(userInput)) {
setState(() { buffer.write(chunk);
fullResponse += chunk;
if (isFirstChunk) { // 逐字显示文本
messages.add(ChatMessage( for (int i = fullResponse.length; i < buffer.length; i++) {
text: fullResponse, setState(() {
isUserMessage: false, fullResponse += buffer.toString()[i];
)); if (isFirstChunk && i == 0) {
isFirstChunk = false; messages.add(ChatMessage(
} else { text: fullResponse,
messages.last = ChatMessage( isUserMessage: false,
text: fullResponse, ));
isUserMessage: false, isFirstChunk = false;
); } else {
} messages.last = ChatMessage(
}); text: fullResponse,
isUserMessage: false,
);
}
});
// 添加短暂延迟以创建打字效果
await Future.delayed(const Duration(milliseconds: 50));
}
} }
await systemSpeak(fullResponse); await systemSpeak(fullResponse);
await _updateCurrentConversation(); await _updateCurrentConversation();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论