Browse Source

上传代码

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
70eddaaa7d
  1. 291
      lib/modules/agent/views/agent_view.dart
  2. 2
      local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift

291
lib/modules/agent/views/agent_view.dart

@ -196,7 +196,17 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
IntroStepBuilder( IntroStepBuilder(
group: 'ai', group: 'ai',
order: 3, order: 3,
getOverlayPosition: IntroOverlayBuilder.overlayPosition, getOverlayPosition: ({
required Offset offset,
required Size screenSize,
required Size size,
}) {
return OverlayPosition(
top: 200.h,
width: screenSize.width,
crossAxisAlignment: CrossAxisAlignment.end,
);
},
overlayBuilder: (params) { overlayBuilder: (params) {
return Obx( return Obx(
() => IntroOverlayBuilder.homeBuilder( () => IntroOverlayBuilder.homeBuilder(
@ -242,8 +252,6 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
? IntroStepBuilder( ? IntroStepBuilder(
group: 'ai', group: 'ai',
order: 4, order: 4,
getOverlayPosition:
IntroOverlayBuilder.overlayPosition,
overlayBuilder: (params) { overlayBuilder: (params) {
return IntroOverlayBuilder.aiBuilder( return IntroOverlayBuilder.aiBuilder(
params, params,
@ -506,8 +514,6 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
return IntroStepBuilder( return IntroStepBuilder(
group: 'ai', group: 'ai',
order: 1, order: 1,
getOverlayPosition:
IntroOverlayBuilder.overlayPosition,
overlayBuilder: (params) { overlayBuilder: (params) {
return IntroOverlayBuilder.aiBuilder( return IntroOverlayBuilder.aiBuilder(
params, params,
@ -670,19 +676,30 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
: Colors.blue[100]) : Colors.blue[100])
: (isDarkMode : (isDarkMode
? Colors.grey[800] ? Colors.grey[800]
: Colors.grey[200]), : const Color.fromARGB(
255, 255, 255, 255)),
borderRadius: borderRadius:
BorderRadius.circular(22.w), BorderRadius.circular(22.w),
border: Border.all( boxShadow: [
color: isPushToTalkActive BoxShadow(
? Colors.blue color:
: (isDarkMode Colors.black.withOpacity(0.2),
? Colors.grey[800]! spreadRadius: 1,
: Colors.grey blurRadius: 2,
.withOpacity(0.1)), offset: const Offset(0, 1),
width: ),
isPushToTalkActive ? 2.w : 1.w, ],
), // border: Border.all(
// color: isPushToTalkActive
// ? Colors.blue
// : (isDarkMode
// ? Colors.grey[800]!
// : const Color.fromARGB(
// 255, 255, 255, 255)
// .withOpacity(0.1)),
// width:
// isPushToTalkActive ? 2.w : 1.w,
// ),
), ),
child: Row( child: Row(
children: [ children: [
@ -742,143 +759,149 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
SizedBox(width: 8.w), SizedBox(width: 8.w),
// 动态按钮区域:展开按钮 + 发送按钮 或 图片选择按钮 // 动态按钮区域:展开按钮 + 发送按钮 或 图片选择按钮
IntroStepBuilder( Builder(builder: (context) {
group: 'ai', StepWidgetParams? widgetParams;
order: 2, return IntroStepBuilder(
getOverlayPosition: group: 'ai',
IntroOverlayBuilder.overlayPosition, order: 2,
overlayBuilder: (params) { onHighlightWidgetTap: () async {
return IntroOverlayBuilder.aiBuilder( await controller
params, .noviceGuideService.aiStepsList[
'点击发送,${controller.noviceGuideService.aiStepsList[controller.noviceGuideService.aiStep]['send']}', controller.noviceGuideService.aiStep]
alignment: false, ['method']();
onTap: () async { widgetParams!.onNext!();
await controller controller.sendMessage();
.noviceGuideService.aiStepsList[ },
controller.noviceGuideService overlayBuilder: (params) {
.aiStep]['method'](); widgetParams = params;
params.onNext!(); return IntroOverlayBuilder.aiBuilder(
controller.sendMessage(); params,
}, '点击发送,${controller.noviceGuideService.aiStepsList[controller.noviceGuideService.aiStep]['send']}',
); alignment: false,
}, );
builder: (BuildContext context, GlobalKey key) => },
Obx( builder:
key: key, (BuildContext context, GlobalKey key) =>
() { Obx(
final hasText = controller.hasTextInput.value; key: key,
final hasImage = () {
controller.isImageInputActive.value; final hasText =
final shouldShowSend = hasText || hasImage; controller.hasTextInput.value;
final shouldShowExpand = final hasImage =
controller.shouldShowExpandButton.value; controller.isImageInputActive.value;
final shouldShowSend = hasText || hasImage;
final shouldShowExpand =
controller.shouldShowExpandButton.value;
if (shouldShowSend) { if (shouldShowSend) {
// 显示发送按钮(可能还有展开按钮) // 显示发送按钮(可能还有展开按钮)
return Column( return Column(
children: [ children: [
// 展开按钮(在发送按钮上方) // 展开按钮(在发送按钮上方)
if (shouldShowExpand && hasText) if (shouldShowExpand && hasText)
Padding( Padding(
padding: padding:
EdgeInsets.only(bottom: 40.h), EdgeInsets.only(bottom: 40.h),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
// 打开底部弹出编辑模式 // 打开底部弹出编辑模式
controller.openFullScreenEdit();
showModalBottomSheet(
context: context,
isScrollControlled: true,
backgroundColor:
Colors.transparent,
builder: (context) =>
const FullScreenEditor(),
).then((_) {
// 弹出页关闭时的回调
controller controller
.closeFullScreenEdit(); .openFullScreenEdit();
}); showModalBottomSheet(
}, context: context,
child: Container( isScrollControlled: true,
width: 32.w, backgroundColor:
height: 32.w, Colors.transparent,
decoration: BoxDecoration( builder: (context) =>
color: isDarkMode const FullScreenEditor(),
? Colors.grey[700] ).then((_) {
: Colors.grey[300], // 弹出页关闭时的回调
borderRadius: controller
BorderRadius.circular( .closeFullScreenEdit();
16.w), });
), },
child: Icon( child: Container(
Icons.expand_less, width: 32.w,
color: isDarkMode height: 32.w,
? Colors.grey[300] decoration: BoxDecoration(
: Colors.grey[700], color: isDarkMode
size: 20.sp, ? Colors.grey[700]
: Colors.grey[300],
borderRadius:
BorderRadius.circular(
16.w),
),
child: Icon(
Icons.expand_less,
color: isDarkMode
? Colors.grey[300]
: Colors.grey[700],
size: 20.sp,
),
), ),
), ),
), ),
// 发送按钮
GestureDetector(
onTap: () =>
controller.sendMessage(),
child: Container(
width: 44.w,
height: 44.w,
margin: EdgeInsets.symmetric(
vertical: 2.w),
decoration: BoxDecoration(
color: primaryColor,
borderRadius:
BorderRadius.circular(22.w),
),
child: Icon(
Icons.send,
color: Colors.white,
size: 22.sp,
),
),
), ),
// 发送按钮 ],
GestureDetector( );
onTap: () => controller.sendMessage(), } else {
// 显示'+'选择按钮
return Obx(() {
final isExpanded = controller
.isPlusOptionsExpanded.value;
return GestureDetector(
onTap: () {
controller.togglePlusOptions();
},
child: Container( child: Container(
width: 44.w, width: 44.w,
height: 44.w, height: 44.w,
margin: EdgeInsets.symmetric( margin: EdgeInsets.symmetric(
vertical: 2.w), vertical: 2.w),
decoration: BoxDecoration( decoration: BoxDecoration(
color: primaryColor, color: isDarkMode
? Colors.grey[800]
: Colors.grey[200],
borderRadius: borderRadius:
BorderRadius.circular(22.w), BorderRadius.circular(22.w),
), ),
child: Icon( child: Icon(
Icons.send, isExpanded
color: Colors.white, ? Icons.close
: Icons.add,
color: isDarkMode
? Colors.grey[300]
: Colors.grey[700],
size: 22.sp, size: 22.sp,
), ),
), ),
), );
], });
); }
} else { },
// 显示'+'选择按钮 ),
return Obx(() { );
final isExpanded = controller }),
.isPlusOptionsExpanded.value;
return GestureDetector(
onTap: () {
controller.togglePlusOptions();
},
child: Container(
width: 44.w,
height: 44.w,
margin: EdgeInsets.symmetric(
vertical: 2.w),
decoration: BoxDecoration(
color: isDarkMode
? Colors.grey[800]
: Colors.grey[200],
borderRadius:
BorderRadius.circular(22.w),
),
child: Icon(
isExpanded
? Icons.close
: Icons.add,
color: isDarkMode
? Colors.grey[300]
: Colors.grey[700],
size: 22.sp,
),
),
);
});
}
},
),
),
], ],
), ),

2
local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift

@ -1487,7 +1487,7 @@ class AudioPlayer {
private let audioQueue = DispatchQueue(label: "agent.audio.player", qos: .userInitiated) private let audioQueue = DispatchQueue(label: "agent.audio.player", qos: .userInitiated)
// 等待音效超时时间(秒)- 改为 var 以支持动态修改 // 等待音效超时时间(秒)- 改为 var 以支持动态修改
private var awaitTimeoutSeconds: TimeInterval = 10.0 private var awaitTimeoutSeconds: TimeInterval = 30.0
private var resourcesBundle: Bundle { private var resourcesBundle: Bundle {
#if SWIFT_PACKAGE #if SWIFT_PACKAGE

Loading…
Cancel
Save