diff --git a/GoogleService-Info.plist b/GoogleService-Info.plist
index c90ada3a3..590c85a5f 100644
--- a/GoogleService-Info.plist
+++ b/GoogleService-Info.plist
@@ -3,9 +3,9 @@
CLIENT_ID
- 907754492821-oc9e77svgmmlgouo0op7vv00e1hb8278.apps.googleusercontent.com
+ 907754492821-tl2blr39g82re40sttkve36ovt6qcu6c.apps.googleusercontent.com
REVERSED_CLIENT_ID
- com.googleusercontent.apps.907754492821-oc9e77svgmmlgouo0op7vv00e1hb8278
+ com.googleusercontent.apps.907754492821-tl2blr39g82re40sttkve36ovt6qcu6c
ANDROID_CLIENT_ID
907754492821-9jakqvathu61e6b8g95i41ssi7o4dnka.apps.googleusercontent.com
API_KEY
@@ -15,7 +15,7 @@
PLIST_VERSION
1
BUNDLE_ID
- com.yunqiinnovation.deepsound
+ com.chuangxiangyunqi.deapsound
PROJECT_ID
deepsound-e0e3d
STORAGE_BUCKET
@@ -31,6 +31,6 @@
IS_SIGNIN_ENABLED
GOOGLE_APP_ID
- 1:907754492821:ios:246794fc44b23174145c9c
+ 1:907754492821:ios:e4b4f3b37e58a7d1145c9c
\ No newline at end of file
diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart
index 3ee98f3a1..10cf3dfc0 100644
--- a/lib/modules/meeting/controllers/meeting_details_controller.dart
+++ b/lib/modules/meeting/controllers/meeting_details_controller.dart
@@ -106,7 +106,7 @@ class MeetingDetailsController extends GetxController
final GetStorage storage = GetStorage();
Map userInfo = storage.read("user_info");
_userId = userInfo['user']['uid'];
- _systemPrompt = AppConfig.agentsystemPrompt("personal_assistant") ?? '';
+ _systemPrompt = AppConfig.agentsystemPrompt("meet_ assistant") ?? '';
}
void _getDataDetails() async {
@@ -335,7 +335,9 @@ class MeetingDetailsController extends GetxController
if (element['additions'].isNotEmpty) {
speaker = 'Speaker ${element['additions']['speaker']}';
text += '$speaker:';
- personnel += '[$speaker] ';
+ if (!personnel.contains(speaker)) {
+ personnel += '[$speaker] ';
+ }
}
list.add({
'meetingid': id,
@@ -357,4 +359,4 @@ class MeetingDetailsController extends GetxController
}
allText = text;
}
-}
\ No newline at end of file
+}
diff --git a/lib/modules/meeting/views/meeting_details_view.dart b/lib/modules/meeting/views/meeting_details_view.dart
index 4e974e27d..d1b2ec7a5 100644
--- a/lib/modules/meeting/views/meeting_details_view.dart
+++ b/lib/modules/meeting/views/meeting_details_view.dart
@@ -22,139 +22,7 @@ class MeetingDetailsView extends GetView {
() => Scaffold(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
appBar: _buildAppBar(isDarkMode),
- body: NestedScrollView(
- controller: controller.scrollController,
- headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
- return [
- SliverAppBar(
- automaticallyImplyLeading: false,
- expandedHeight: 210.w,
- backgroundColor: Colors.transparent,
- flexibleSpace: FlexibleSpaceBar(
- collapseMode: CollapseMode.pin,
- background: Align(
- alignment: Alignment.topCenter,
- child: Container(
- height: 200.w,
- decoration: BoxDecoration(
- color: Colors.grey[200]!,
- borderRadius: BorderRadius.vertical(
- bottom: Radius.circular(20.r),
- ),
- ),
- child: Column(
- children: [
- Container(
- margin: EdgeInsets.only(bottom: 5.w),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(8.r),
- ),
- child: AudioFileWaveforms(
- size: Size(350.w, 120.w),
- playerController: controller.playerController,
- playerWaveStyle: PlayerWaveStyle(
- fixedWaveColor: Colors.grey[300]!,
- liveWaveColor: Colors.red,
- seekLineColor: Colors.red,
- scaleFactor: 600,
- ),
- ),
- ),
- SizedBox(
- width: 350.w,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- StreamBuilder(
- stream: controller.playerController
- .onCurrentDurationChanged,
- builder: (context, snapshot) {
- final position = snapshot.data ?? 0;
- return Text(
- DateUtil.formatDateMs(
- position,
- format: 'HH:mm:ss',
- isUtc: true,
- ),
- style: TextStyle(
- color: isDarkMode
- ? Colors.grey[400]
- : Colors.grey[500],
- fontSize: 12.sp,
- ),
- );
- },
- ),
- Obx(
- () => Text(
- DateUtil.formatDateMs(
- controller.durationMax.value,
- format: 'HH:mm:ss',
- isUtc: true,
- ),
- style: TextStyle(
- color: isDarkMode
- ? Colors.grey[400]
- : Colors.grey[500],
- fontSize: 12.sp,
- ),
- ),
- ),
- ],
- ),
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- Icon(
- Icons.replay_10,
- color: Colors.black,
- size: 30.w,
- ),
- StreamBuilder(
- stream: controller
- .playerController.onPlayerStateChanged,
- builder: (context, snapshot) {
- bool isPlay =
- snapshot.data?.isPlaying ?? false;
- return GestureDetector(
- onTap: () {
- if (isPlay) {
- controller.playerController
- .pausePlayer();
- } else {
- controller.playerController
- .startPlayer();
- }
- },
- child: Icon(
- isPlay
- ? Icons.pause_circle
- : Icons.play_circle,
- color: Colors.black,
- size: 48.w,
- ),
- );
- },
- ),
- Icon(
- Icons.forward_10,
- color: Colors.black,
- size: 30.w,
- ),
- ],
- ),
- ],
- ),
- ),
- ),
- ),
- ),
- ];
- },
- body: _buildBody(context, isDarkMode),
- ),
+ body: _buildBody(context, isDarkMode),
),
);
}
@@ -295,6 +163,7 @@ class MeetingDetailsView extends GetView {
Widget _buildBody(BuildContext context, bool isDarkMode) {
return Column(
children: [
+ _soundWave(isDarkMode),
Container(
padding: EdgeInsets.symmetric(horizontal: 8.w),
margin: EdgeInsets.symmetric(vertical: 10.w),
@@ -328,6 +197,113 @@ class MeetingDetailsView extends GetView {
);
}
+ Widget _soundWave(bool isDarkMode) {
+ return Container(
+ height: 200.w,
+ margin: EdgeInsets.only(bottom: 10.w),
+ decoration: BoxDecoration(
+ color: Colors.grey[200]!,
+ borderRadius: BorderRadius.vertical(
+ bottom: Radius.circular(20.r),
+ ),
+ ),
+ child: Column(
+ children: [
+ Container(
+ margin: EdgeInsets.only(bottom: 5.w),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(8.r),
+ ),
+ child: AudioFileWaveforms(
+ size: Size(350.w, 120.w),
+ playerController: controller.playerController,
+ playerWaveStyle: PlayerWaveStyle(
+ fixedWaveColor: Colors.grey[300]!,
+ liveWaveColor: Colors.red,
+ seekLineColor: Colors.red,
+ scaleFactor: 600,
+ ),
+ ),
+ ),
+ SizedBox(
+ width: 350.w,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ StreamBuilder(
+ stream: controller.playerController.onCurrentDurationChanged,
+ builder: (context, snapshot) {
+ final position = snapshot.data ?? 0;
+ return Text(
+ DateUtil.formatDateMs(
+ position,
+ format: 'HH:mm:ss',
+ isUtc: true,
+ ),
+ style: TextStyle(
+ color: isDarkMode ? Colors.grey[400] : Colors.grey[500],
+ fontSize: 12.sp,
+ ),
+ );
+ },
+ ),
+ Obx(
+ () => Text(
+ DateUtil.formatDateMs(
+ controller.durationMax.value,
+ format: 'HH:mm:ss',
+ isUtc: true,
+ ),
+ style: TextStyle(
+ color: isDarkMode ? Colors.grey[400] : Colors.grey[500],
+ fontSize: 12.sp,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ Icon(
+ Icons.replay_10,
+ color: Colors.black,
+ size: 30.w,
+ ),
+ StreamBuilder(
+ stream: controller.playerController.onPlayerStateChanged,
+ builder: (context, snapshot) {
+ bool isPlay = snapshot.data?.isPlaying ?? false;
+ return GestureDetector(
+ onTap: () {
+ if (isPlay) {
+ controller.playerController.pausePlayer();
+ } else {
+ controller.playerController.startPlayer();
+ }
+ },
+ child: Icon(
+ isPlay ? Icons.pause_circle : Icons.play_circle,
+ color: Colors.black,
+ size: 48.w,
+ ),
+ );
+ },
+ ),
+ Icon(
+ Icons.forward_10,
+ color: Colors.black,
+ size: 30.w,
+ ),
+ ],
+ ),
+ ],
+ ),
+ );
+ }
+
Widget _iconItem(IconData icon, String title, int index) {
bool isActive = controller.currentIndex.value == index;
diff --git a/lib/modules/meeting/views/mind_map_tab.dart b/lib/modules/meeting/views/mind_map_tab.dart
index a4e783ba9..51de6ccdb 100644
--- a/lib/modules/meeting/views/mind_map_tab.dart
+++ b/lib/modules/meeting/views/mind_map_tab.dart
@@ -1,12 +1,98 @@
import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:webview_flutter/webview_flutter.dart';
-class MindMapTab extends StatelessWidget {
+import '../controllers/meeting_details_controller.dart';
+
+class MindMapTab extends StatefulWidget {
const MindMapTab({super.key});
+ @override
+ State createState() => _MindMapTabState();
+}
+
+class _MindMapTabState extends State {
+ late final WebViewController _controller;
+ final _meetingDetailsController = Get.find();
+
+ @override
+ void initState() {
+ super.initState();
+ String html = '''
+
+
+
+
+
+
+ MindMap
+
+
+
+
+
+
+
+
+
+
+
+
+ ''';
+ _controller = WebViewController()
+ ..setJavaScriptMode(JavaScriptMode.unrestricted)
+ ..loadHtmlString(html);
+ }
+
@override
Widget build(BuildContext context) {
- return SingleChildScrollView(
- child: Text(''),
+ return WebViewWidget(
+ controller: _controller,
);
}
}
diff --git a/local_plugins/agent_service/android/build.gradle.kts b/local_plugins/agent_service/android/build.gradle.kts
index 2a67d0ba0..79cb9fcde 100644
--- a/local_plugins/agent_service/android/build.gradle.kts
+++ b/local_plugins/agent_service/android/build.gradle.kts
@@ -47,6 +47,6 @@ dependencies {
add("compileOnly", project(":chat_storage"))
add("compileOnly", project(":ble_service"))
add("compileOnly", project(":music_service"))
- add("compileOnly", project(":amap_service"))
+ // add("compileOnly", project(":amap_service"))
add("compileOnly", project(":speech"))
}
\ No newline at end of file
diff --git a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
index bda9b148b..a3ef740d6 100644
--- a/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
+++ b/local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
@@ -7,7 +7,6 @@ import com.yunqiinnovation.azure_speech.AzureAsrHelper
import com.yunqiinnovation.open_ai_service.OpenAIService
import com.yunqiinnovation.chat_storage.ChatStorageHelper
import com.yunqiinnovation.music_service.MusicServiceStarter
-import com.yunqiinnovation.amap_service.NavigationServiceStarter
import android.util.Log
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.*
@@ -1191,7 +1190,7 @@ object AgentService : CoroutineScope {
// 如果 playlist 中有有效的歌曲,开始播放
if (!start.isNullOrEmpty() && !end.isNullOrEmpty()) {
Log.i(TAG, "启动导航服务 ${start} ${end}")
- NavigationServiceStarter.startServiceWithCommand(context, command = "start", startpos = start, endpos = end)
+ // NavigationServiceStarter.startServiceWithCommand(context, command = "start", startpos = start, endpos = end)
} else {
Log.i(TAG, "启动导航服务失败")
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 3fe578180..7a8bbb5c2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -31,7 +31,7 @@ dependencies:
logger: ^2.0.2+1
flutter_blue_plus: ^1.31.16
just_audio: ^0.9.36
- webview_flutter: ^4.10.0
+ webview_flutter: ^4.12.0
flutter_easyloading: ^3.0.5
package_info_plus: ^8.3.0
file_picker: ^10.1.5
@@ -65,8 +65,8 @@ dependencies:
dio: ^5.8.0+1
sqflite: ^2.4.2
path: ^1.9.1
-# azure_speech:
-# path: local_plugins/azure_speech
+ azure_speech:
+ path: local_plugins/azure_speech
open_ai_service:
path: local_plugins/open_ai_service
chat_storage: