Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

weicu
lxm 1 year ago
parent
commit
8be89ef509
  1. 9
      lib/data/services/network/api.dart
  2. 6
      lib/modules/meeting/controllers/meeting_details_controller.dart
  3. 191
      lib/modules/meeting/views/overview_tab.dart
  4. 3
      lib/modules/pairing/controllers/pairing_controller.dart

9
lib/data/services/network/api.dart

@ -135,4 +135,13 @@ class Api {
params: params,
);
}
//绑定设备
static bindauthcode([params]) {
return DioManager().request(
NWMethod.post,
'/api/home/user_bindauthcode',
params: params,
);
}
}

6
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -252,7 +252,11 @@ class MeetingDetailsController extends GetxController
verifyQuantity++;
DeapsoundAIService().sendMessage(
messages: [
{'role': 'system', 'content': _systemPrompt},
{
'role': 'system',
'content':
'您将扮演一名会议总结专家,拥有超强的信息归纳与细分能力。不仅能高效处理各类通用场景会议,精准提炼会议核心内容,为后续思维导图生成奠定坚实基础。若涉及人员,人员名称保留[]。并根据内容只输出对应语言。',
},
{'role': 'user', 'content': allText},
],
).then((value) {

191
lib/modules/meeting/views/overview_tab.dart

@ -1,7 +1,10 @@
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../controllers/meeting_details_controller.dart';
import 'generate_bottom_sheet.dart';
class OverviewTab extends StatefulWidget {
const OverviewTab({super.key});
@ -13,14 +16,194 @@ class OverviewTab extends StatefulWidget {
class _OverviewTabState extends State<OverviewTab> {
final _controller = Get.find<MeetingDetailsController>();
List _dataList = [];
@override
void initState() {
super.initState();
if (_controller.meetingDetails.value.overview.isNotEmpty) {
_dataList = _controller.meetingDetails.value.overview.split('\n');
}
}
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
return Stack(
children: [
_dataList.isNotEmpty
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(top: 5.w),
child: Text(
DateUtil.formatDateMs(
_controller.meetingData.value.creationtime,
format: DateFormats.y_mo_d_h_m,
),
style: TextStyle(
color: Colors.black54,
fontSize: 12.sp,
),
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 10.w),
child: Text(
_controller.meetingData.value.title,
style: TextStyle(
fontSize: 20.sp,
fontWeight: FontWeight.bold,
),
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 10.w),
child: Divider(
height: 1,
color: Colors.grey[300],
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 10.w),
child: Text(
'分析出${_dataList.length}个关键事件。',
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
),
Expanded(
child: ListView.builder(
itemCount: _dataList.length,
padding: EdgeInsets.fromLTRB(10.w, 10.w, 10.w, 80.w),
itemBuilder: (BuildContext context, int index) {
return _item(_dataList[index]);
},
),
),
],
)
: _empty(),
Obx(
() => Positioned(
bottom: 20.w,
left: 0,
right: 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_controller.meetingDetails.value.tasktype == 0)
SizedBox(
width: 150.w,
child: _button(
Icons.auto_awesome,
'生成',
() {
Get.bottomSheet(
const GenerateBottomSheet(),
isScrollControlled: true,
backgroundColor: Colors.grey[100],
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r),
),
),
);
},
),
),
],
),
),
),
],
);
}
Widget _item(String data) {
return Container(
padding: EdgeInsets.all(10.w),
margin: EdgeInsets.symmetric(vertical: 5.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12.w),
boxShadow: const [
BoxShadow(
color: Color(0x1A3045C8),
offset: Offset(0.0, 0.0),
blurRadius: 10,
spreadRadius: 0.0,
),
],
),
child: Text(data),
);
}
Widget _button(IconData icon, String title, Function() onTap) {
return GestureDetector(
onTap: onTap,
child: Container(
height: 42.w,
padding: EdgeInsets.symmetric(horizontal: 15.w),
margin: EdgeInsets.symmetric(horizontal: 4.w),
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(42.w),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
icon,
color: Colors.white,
size: 20.sp,
),
5.horizontalSpace,
Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
),
),
],
),
),
);
}
Widget _empty() {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 30.w),
child: Column(
children: [
Text('概览'),
Text('AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。'),
Text(_controller.meetingDetails.value.overview),
Padding(
padding: EdgeInsets.only(bottom: 10.w),
child: Icon(
Icons.summarize,
color: Colors.grey,
size: 40.sp,
),
),
Text(
'概览',
style: TextStyle(
color: Colors.black87,
fontSize: 18.sp,
fontWeight: FontWeight.bold,
),
),
Text(
'AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。',
style: TextStyle(
color: Colors.grey,
fontSize: 14.sp,
),
textAlign: TextAlign.center,
),
],
),
);

3
lib/modules/pairing/controllers/pairing_controller.dart

@ -540,7 +540,6 @@ class PairingController extends GetxController {
// 调用BLE管理器的自动绑定方法
final response = await Api.bindearphone({
"earphonemac": currentDevice?.address,
"earphoneauthcode": "",
});
Logger.i(_tag, '手动授权结果 ${response}');
if (response != null) {
@ -556,7 +555,7 @@ class PairingController extends GetxController {
/// 用户点击授权码输入框
void onAutoCodeInputTap() async {
// 调用BLE管理器的自动绑定方法
final response = await Api.bindearphone({
final response = await Api.bindauthcode({
"earphonemac": currentDevice?.address,
"earphoneauthcode": codeInputController.text.trim(),
});

Loading…
Cancel
Save