fix: 删除macos平台的依赖,桌面平台一律跳转到网页

This commit is contained in:
2026-01-09 02:36:05 -08:00
parent ac65aaa227
commit b90d451bcc
4 changed files with 30 additions and 226 deletions
@@ -8,12 +8,9 @@ import 'package:kaer_with_panels/app/localization/app_translations.dart';
import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
import '../../../widgets/kr_simple_loading.dart';
// 桌面平台使用 WebView SDK
import 'package:crisp_sdk/crisp_sdk.dart' as webview_crisp;
/// 🔧 P15 重构: Crisp 客服聊天视图
/// - 移动平台 (Android/iOS): 打开原生聊天界面后自动返回
/// - 桌面平台 (macOS/Windows): 在页面内嵌入 WebView
/// - 桌面平台 (macOS/Windows/Linux): 直接跳转外部浏览器,不进入此页面
class KRCrispView extends GetView<KRCrispController> {
const KRCrispView({Key? key}) : super(key: key);
@@ -58,30 +55,11 @@ class KRCrispView extends GetView<KRCrispController> {
return Container(
color: Theme.of(context).scaffoldBackgroundColor,
child: Obx(() {
// ========== 移动平台 ==========
if (_isMobilePlatform) {
if (!controller.kr_isInitialized.value) {
return _kr_buildErrorView(context);
}
// 显示加载中界面,同时原生聊天界面在后台启动
return _kr_buildLoadingView(context, '正在加载客服');
if (!controller.kr_isInitialized.value) {
return _kr_buildErrorView(context);
}
// ========== 桌面平台 ==========
if (controller.kr_isLoading.value) {
return _kr_buildLoadingView(context, '正在初始化客服系统');
}
if (controller.kr_isInitialized.value && controller.crispController != null) {
// 桌面平台:嵌入 WebView
return webview_crisp.CrispView(
crispController: controller.crispController!,
clearCache: true,
onSessionIdReceived: _kr_onSessionIdReceived,
);
}
return _kr_buildErrorView(context);
// 显示加载中界面,同时原生聊天界面在后台启动
return _kr_buildLoadingView(context, '正在加载客服');
}),
);
}
@@ -158,7 +136,7 @@ class KRCrispView extends GetView<KRCrispController> {
if (_isMobilePlatform) {
_kr_openNativeCrispChat(context);
} else {
controller.kr_initializeDesktopCrisp();
Get.back(); // 桌面端不应进入此页面,直接返回
}
},
child: Text('common.retry'.tr),
@@ -168,8 +146,4 @@ class KRCrispView extends GetView<KRCrispController> {
);
}
/// 处理会话 ID 接收事件 (桌面平台)
void _kr_onSessionIdReceived(String sessionId) {
debugPrint('[P15-Desktop] Crisp 会话 ID: $sessionId');
}
}