Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
flutter-chat
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
songchuancai
flutter-chat
Commits
056bceaf
提交
056bceaf
authored
11月 08, 2024
作者:
songchuancai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加打字机效果
上级
a60101b5
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
49 行增加
和
30 行删除
+49
-30
home_page.dart
lib/home_page.dart
+49
-30
没有找到文件。
lib/home_page.dart
浏览文件 @
056bceaf
...
...
@@ -154,22 +154,31 @@ class _HomePageState extends State<HomePage> {
try
{
String
fullResponse
=
''
;
bool
isFirstChunk
=
true
;
// 创建一个缓冲区来存储收到的文本
StringBuffer
buffer
=
StringBuffer
();
await
for
(
final
chunk
in
openAIService
.
chatGPTAPI
(
userMessage
))
{
setState
(()
{
fullResponse
+=
chunk
;
if
(
isFirstChunk
)
{
messages
.
add
(
ChatMessage
(
text:
fullResponse
,
isUserMessage:
false
,
));
isFirstChunk
=
false
;
}
else
{
messages
.
last
=
ChatMessage
(
text:
fullResponse
,
isUserMessage:
false
,
);
}
});
buffer
.
write
(
chunk
);
// 逐字显示文本
for
(
int
i
=
fullResponse
.
length
;
i
<
buffer
.
length
;
i
++)
{
setState
(()
{
fullResponse
+=
buffer
.
toString
()[
i
];
if
(
isFirstChunk
&&
i
==
0
)
{
messages
.
add
(
ChatMessage
(
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
_updateCurrentConversation
();
...
...
@@ -191,22 +200,32 @@ class _HomePageState extends State<HomePage> {
try
{
String
fullResponse
=
''
;
bool
isFirstChunk
=
true
;
// 创建一个缓冲区来存储收到的文本
StringBuffer
buffer
=
StringBuffer
();
await
for
(
final
chunk
in
openAIService
.
chatGPTAPI
(
userInput
))
{
setState
(()
{
fullResponse
+=
chunk
;
if
(
isFirstChunk
)
{
messages
.
add
(
ChatMessage
(
text:
fullResponse
,
isUserMessage:
false
,
));
isFirstChunk
=
false
;
}
else
{
messages
.
last
=
ChatMessage
(
text:
fullResponse
,
isUserMessage:
false
,
);
}
});
buffer
.
write
(
chunk
);
// 逐字显示文本
for
(
int
i
=
fullResponse
.
length
;
i
<
buffer
.
length
;
i
++)
{
setState
(()
{
fullResponse
+=
buffer
.
toString
()[
i
];
if
(
isFirstChunk
&&
i
==
0
)
{
messages
.
add
(
ChatMessage
(
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
_updateCurrentConversation
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论