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
c2c63647
提交
c2c63647
authored
11月 12, 2024
作者:
songchuancai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加会话名称自动生成
上级
0f950dc7
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
43 行增加
和
2 行删除
+43
-2
home_page.dart
lib/home_page.dart
+0
-0
chat_page.dart
lib/pages/chat_page.dart
+10
-0
chat_service.dart
lib/services/chat_service.dart
+31
-0
GeneratedPluginRegistrant.swift
macos/Flutter/GeneratedPluginRegistrant.swift
+2
-2
没有找到文件。
lib/home_page.dart
浏览文件 @
c2c63647
差异被折叠。
点击展开。
lib/pages/chat_page.dart
浏览文件 @
c2c63647
...
...
@@ -6,6 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import
'../models/app_item.dart'
;
import
'../services/chat_service.dart'
;
import
'../services/storage_service.dart'
;
import
'../home_page.dart'
;
...
...
@@ -22,6 +23,8 @@ class ChatPage extends ConsumerStatefulWidget {
}
class
_ChatPageState
extends
ConsumerState
<
ChatPage
>
{
final
OpenAIService
openAIService
=
OpenAIService
();
@override
void
initState
()
{
super
.
initState
();
...
...
@@ -46,6 +49,12 @@ class _ChatPageState extends ConsumerState<ChatPage> {
}
@override
void
dispose
()
{
openAIService
.
clearConversation
();
super
.
dispose
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
...
...
@@ -78,6 +87,7 @@ class _ChatPageState extends ConsumerState<ChatPage> {
customDescription:
widget
.
app
.
description
,
customImageUrl:
widget
.
app
.
iconUrl
,
hideNavigation:
true
,
openAIService:
openAIService
,
),
);
}
...
...
lib/services/chat_service.dart
浏览文件 @
c2c63647
...
...
@@ -8,6 +8,32 @@ class OpenAIService {
// final String apiKey = 'sk-OVjS7VE9mT68Uvg7kSFoMnbU6EU836FO';
// final String appKey = 'app-FRP2s2wSx01rsE67';
String
?
conversationId
;
bool
_isFirstMessage
=
true
;
Future
<
void
>
_generateConversationName
()
async
{
if
(
conversationId
==
null
)
return
;
var
prefs
=
await
SharedPreferences
.
getInstance
();
var
storageService
=
StorageService
(
prefs
);
String
appKey
=
storageService
.
getWorkbenchToken
()
??
''
;
try
{
final
response
=
await
http
.
post
(
Uri
.
parse
(
'
$baseUrl
/api/conversations/
$conversationId
/name'
),
headers:
{
'Content-Type'
:
'application/json'
,
'Authorization'
:
'Bearer
$appKey
'
,
},
body:
jsonEncode
({
"auto_generate"
:
true
}),
);
if
(
response
.
statusCode
!=
200
)
{
print
(
'生成会话名称失败:
${response.statusCode}
'
);
}
}
catch
(
e
)
{
print
(
'生成会话名称异常:
$e
'
);
}
}
Stream
<
String
>
chatGPTAPI
(
String
message
)
async
*
{
final
client
=
http
.
Client
();
...
...
@@ -85,11 +111,16 @@ class OpenAIService {
}
catch
(
e
)
{
throw
Exception
(
e
.
toString
());
}
finally
{
if
(
_isFirstMessage
&&
conversationId
!=
null
)
{
await
_generateConversationName
();
_isFirstMessage
=
false
;
}
client
.
close
();
}
}
void
clearConversation
()
{
conversationId
=
null
;
_isFirstMessage
=
true
;
}
}
macos/Flutter/GeneratedPluginRegistrant.swift
浏览文件 @
c2c63647
...
...
@@ -9,12 +9,12 @@ import audioplayers_darwin
import
flutter_tts
import
path_provider_foundation
import
shared_preferences_foundation
import
speech_to_text
_macos
import
speech_to_text
func
RegisterGeneratedPlugins
(
registry
:
FlutterPluginRegistry
)
{
AudioplayersDarwinPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"AudioplayersDarwinPlugin"
))
FlutterTtsPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FlutterTtsPlugin"
))
PathProviderPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"PathProviderPlugin"
))
SharedPreferencesPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SharedPreferencesPlugin"
))
SpeechToText
MacosPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SpeechToTextMacos
Plugin"
))
SpeechToText
Plugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SpeechToText
Plugin"
))
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论