|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; |
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:im_flutter_sdk/im_flutter_sdk.dart'; |
|
|
import 'package:im_flutter_sdk/im_flutter_sdk.dart'; |
|
|
|
|
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
|
|
|
|
|
|
|
|
import '../../controller/message/call_controller.dart'; |
|
|
import '../../controller/message/call_controller.dart'; |
|
|
import '../../controller/message/chat_controller.dart'; |
|
|
import '../../controller/message/chat_controller.dart'; |
|
|
@ -137,7 +138,7 @@ class _ChatPageState extends State<ChatPage> { |
|
|
|
|
|
|
|
|
// 刷新玫瑰余额(参考 LiveRoomPage 的实现) |
|
|
// 刷新玫瑰余额(参考 LiveRoomPage 的实现) |
|
|
_refreshRoseBalance(); |
|
|
_refreshRoseBalance(); |
|
|
|
|
|
|
|
|
|
|
|
_controller.setDialogDismiss(true); |
|
|
SmartDialog.show( |
|
|
SmartDialog.show( |
|
|
builder: (context) { |
|
|
builder: (context) { |
|
|
return ChatGiftPopup( |
|
|
return ChatGiftPopup( |
|
|
@ -154,7 +155,10 @@ class _ChatPageState extends State<ChatPage> { |
|
|
}, |
|
|
}, |
|
|
alignment: Alignment.bottomCenter, |
|
|
alignment: Alignment.bottomCenter, |
|
|
animationType: SmartAnimationType.centerFade_otherSlide, |
|
|
animationType: SmartAnimationType.centerFade_otherSlide, |
|
|
maskColor: Colors.black.withOpacity(0.5), |
|
|
|
|
|
|
|
|
maskColor: TDTheme.of(context).fontGyColor2, |
|
|
|
|
|
onDismiss: () { |
|
|
|
|
|
_controller.setDialogDismiss(false); |
|
|
|
|
|
}, |
|
|
maskWidget: GestureDetector( |
|
|
maskWidget: GestureDetector( |
|
|
onTap: () => SmartDialog.dismiss(), |
|
|
onTap: () => SmartDialog.dismiss(), |
|
|
child: Container(color: Colors.transparent), |
|
|
child: Container(color: Colors.transparent), |
|
|
@ -179,12 +183,10 @@ class _ChatPageState extends State<ChatPage> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 显示通话类型选择弹框 |
|
|
// 显示通话类型选择弹框 |
|
|
void _showCallTypeSelectionDialog( |
|
|
|
|
|
ChatController controller, { |
|
|
|
|
|
List<ChatAudioProductModel>? products, |
|
|
|
|
|
}) { |
|
|
|
|
|
|
|
|
void _showCallTypeSelectionDialog(ChatController controller, {List<ChatAudioProductModel>? products}) { |
|
|
// 隐藏键盘 |
|
|
// 隐藏键盘 |
|
|
FocusScope.of(context).unfocus(); |
|
|
FocusScope.of(context).unfocus(); |
|
|
|
|
|
_controller.setDialogDismiss(true); |
|
|
SmartDialog.show( |
|
|
SmartDialog.show( |
|
|
builder: (context) { |
|
|
builder: (context) { |
|
|
return CallTypeSelectionDialog( |
|
|
return CallTypeSelectionDialog( |
|
|
@ -225,7 +227,10 @@ class _ChatPageState extends State<ChatPage> { |
|
|
}, |
|
|
}, |
|
|
alignment: Alignment.bottomCenter, |
|
|
alignment: Alignment.bottomCenter, |
|
|
animationType: SmartAnimationType.centerFade_otherSlide, |
|
|
animationType: SmartAnimationType.centerFade_otherSlide, |
|
|
maskColor: Colors.black.withOpacity(0.5), |
|
|
|
|
|
|
|
|
maskColor: TDTheme.of(context).fontGyColor2, |
|
|
|
|
|
onDismiss: () { |
|
|
|
|
|
_controller.setDialogDismiss(false); |
|
|
|
|
|
}, |
|
|
maskWidget: GestureDetector( |
|
|
maskWidget: GestureDetector( |
|
|
onTap: () => SmartDialog.dismiss(), |
|
|
onTap: () => SmartDialog.dismiss(), |
|
|
child: Container(color: Colors.transparent), |
|
|
child: Container(color: Colors.transparent), |
|
|
@ -238,13 +243,18 @@ class _ChatPageState extends State<ChatPage> { |
|
|
return GetBuilder<ChatController>( |
|
|
return GetBuilder<ChatController>( |
|
|
init: _controller, |
|
|
init: _controller, |
|
|
builder: (controller) { |
|
|
builder: (controller) { |
|
|
return WillPopScope( |
|
|
|
|
|
onWillPop: () async { |
|
|
|
|
|
|
|
|
return PopScope( |
|
|
|
|
|
canPop: !controller.isDialogShowing.value, |
|
|
|
|
|
onPopInvokedWithResult: (bool didPop, Object? result) async { |
|
|
// 退出页面时停止播放并销毁播放器 |
|
|
// 退出页面时停止播放并销毁播放器 |
|
|
|
|
|
if (controller.isDialogShowing.value) { |
|
|
|
|
|
SmartDialog.dismiss(); |
|
|
|
|
|
return; // 阻止页面返回 |
|
|
|
|
|
} |
|
|
await VoicePlayerManager.instance.stop(); |
|
|
await VoicePlayerManager.instance.stop(); |
|
|
// 关闭礼物弹框 |
|
|
|
|
|
SmartDialog.dismiss(); |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
if (!didPop) { |
|
|
|
|
|
Get.back(); |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
child: Scaffold( |
|
|
child: Scaffold( |
|
|
backgroundColor: Color(0xffF5F5F5), |
|
|
backgroundColor: Color(0xffF5F5F5), |
|
|
@ -719,9 +729,13 @@ class _ChatPageState extends State<ChatPage> { |
|
|
onTap: () { |
|
|
onTap: () { |
|
|
// 隐藏键盘 |
|
|
// 隐藏键盘 |
|
|
FocusScope.of(context).unfocus(); |
|
|
FocusScope.of(context).unfocus(); |
|
|
|
|
|
_controller.setDialogDismiss(true); |
|
|
SmartDialog.show( |
|
|
SmartDialog.show( |
|
|
alignment: Alignment.bottomCenter, |
|
|
alignment: Alignment.bottomCenter, |
|
|
maskColor: Colors.black.withOpacity(0.5), |
|
|
|
|
|
|
|
|
maskColor: TDTheme.of(context).fontGyColor2, |
|
|
|
|
|
onDismiss: () { |
|
|
|
|
|
_controller.setDialogDismiss(false); |
|
|
|
|
|
}, |
|
|
builder: (_) => const LiveRechargePopup(), |
|
|
builder: (_) => const LiveRechargePopup(), |
|
|
); |
|
|
); |
|
|
}, |
|
|
}, |
|
|
|