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

增加打字机效果

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