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

增加打字机效果

上级 a60101b5
...@@ -154,10 +154,15 @@ class _HomePageState extends State<HomePage> { ...@@ -154,10 +154,15 @@ 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)) {
buffer.write(chunk);
// 逐字显示文本
for (int i = fullResponse.length; i < buffer.length; i++) {
setState(() { setState(() {
fullResponse += chunk; fullResponse += buffer.toString()[i];
if (isFirstChunk) { if (isFirstChunk && i == 0) {
messages.add(ChatMessage( messages.add(ChatMessage(
text: fullResponse, text: fullResponse,
isUserMessage: false, isUserMessage: false,
...@@ -170,6 +175,10 @@ class _HomePageState extends State<HomePage> { ...@@ -170,6 +175,10 @@ class _HomePageState extends State<HomePage> {
); );
} }
}); });
// 添加短暂延迟以创建打字效果
await Future.delayed(const Duration(milliseconds: 50));
}
} }
await systemSpeak(fullResponse); await systemSpeak(fullResponse);
await _updateCurrentConversation(); await _updateCurrentConversation();
...@@ -191,10 +200,16 @@ class _HomePageState extends State<HomePage> { ...@@ -191,10 +200,16 @@ 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)) {
buffer.write(chunk);
// 逐字显示文本
for (int i = fullResponse.length; i < buffer.length; i++) {
setState(() { setState(() {
fullResponse += chunk; fullResponse += buffer.toString()[i];
if (isFirstChunk) { if (isFirstChunk && i == 0) {
messages.add(ChatMessage( messages.add(ChatMessage(
text: fullResponse, text: fullResponse,
isUserMessage: false, isUserMessage: false,
...@@ -207,6 +222,10 @@ class _HomePageState extends State<HomePage> { ...@@ -207,6 +222,10 @@ class _HomePageState extends State<HomePage> {
); );
} }
}); });
// 添加短暂延迟以创建打字效果
await Future.delayed(const Duration(milliseconds: 50));
}
} }
await systemSpeak(fullResponse); await systemSpeak(fullResponse);
await _updateCurrentConversation(); await _updateCurrentConversation();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论