feat: 增加客服2

This commit is contained in:
speakeloudest 2026-01-13 01:19:13 -08:00
parent 2ea6cd2379
commit 1d2a89a80a
7 changed files with 101 additions and 1 deletions

View File

@ -61,6 +61,11 @@ class HIMenuView extends GetView<HIMenuController> implements HasSwipeConfig {
title: '在线客服',
onTap: () => KRCommonUtil.kr_openCustomerService(),
),
const MenuItem(
iconName: 'icon-5',
title: '在线客服2',
route: Routes.KR_CHATWOOT,
),
];
return HIBaseScaffold(

View File

@ -0,0 +1,12 @@
import 'package:get/get.dart';
import '../controllers/kr_chatwoot_controller.dart';
/// 2Chatwoot
class KRChatwootBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<KRChatwootController>(
() => KRChatwootController(),
);
}
}

View File

@ -0,0 +1,21 @@
import 'package:get/get.dart';
/// 2Chatwoot
class KRChatwootController extends GetxController {
/// Chatwoot
final String kr_chatwootUrl = 'https://app.chatwoot.com/widget?website_token=YXQmh16ymNYW1SVybhnoQQ9w';
///
final RxBool kr_isLoading = true.obs;
@override
void onInit() {
super.onInit();
}
///
/// [loading]
void kr_setLoading(bool loading) {
kr_isLoading.value = loading;
}
}

View File

@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:kaer_with_panels/app/widgets/hi_base_scaffold.dart';
import 'package:kaer_with_panels/app/widgets/kr_simple_loading.dart';
import '../controllers/kr_chatwoot_controller.dart';
/// 2Chatwoot
class KRChatwootView extends GetView<KRChatwootController> {
const KRChatwootView({super.key});
@override
Widget build(BuildContext context) {
return HIBaseScaffold(
showBack: true,
topContentAreaHeight: 0,
child: Stack(
children: [
InAppWebView(
initialUrlRequest: URLRequest(
url: WebUri(controller.kr_chatwootUrl),
),
initialSettings: InAppWebViewSettings(
javaScriptEnabled: true,
domStorageEnabled: true,
allowsInlineMediaPlayback: true,
),
onLoadStart: (controller, url) {
this.controller.kr_setLoading(true);
},
onLoadStop: (controller, url) {
this.controller.kr_setLoading(false);
},
onReceivedError: (controller, request, error) {
this.controller.kr_setLoading(false);
},
),
Obx(() {
if (controller.kr_isLoading.value) {
return const Center(
child: KRSimpleLoading(
size: 40,
),
);
}
return const SizedBox.shrink();
}),
],
),
);
}
}

View File

@ -57,7 +57,7 @@ class KRCrispController extends GetxController {
_nativeConfig = native_crisp.CrispConfig(
websiteID: AppConfig.getInstance().kr_website_id,
user: native_crisp.User(
email: identifier,
email: null,
nickName: identifier,
),
);

View File

@ -10,6 +10,8 @@ import 'package:kaer_with_panels/app/modules/hi_user_info/views/hi_user_info_vie
import 'package:kaer_with_panels/app/modules/hi_anti_lost/bindings/hi_anti_lost_binding.dart';
import 'package:kaer_with_panels/app/modules/hi_anti_lost/views/hi_anti_lost_view.dart';
import '../modules/kr_chatwoot/bindings/kr_chatwoot_binding.dart';
import '../modules/kr_chatwoot/views/kr_chatwoot_view.dart';
import '../modules/kr_crisp_chat/bindings/kr_crisp_binding.dart';
import '../modules/kr_crisp_chat/views/kr_crisp_view.dart';
import '../modules/kr_delete_account/bindings/kr_delete_account_binding.dart';
@ -138,5 +140,11 @@ class AppPages {
binding: HIAntiLostBinding(),
popGesture: false,
),
GetPage(
name: _Paths.KR_CHATWOOT,
page: () => SwipeWrapper.detect(() => const KRChatwootView()),
binding: KRChatwootBinding(),
popGesture: false,
),
];
}

View File

@ -25,6 +25,7 @@ abstract class Routes {
static const HI_HELP = _Paths.HI_HELP;
static const HI_USER_INFO = _Paths.HI_USER_INFO;
static const HI_ANTI_LOST = _Paths.HI_ANTI_LOST;
static const KR_CHATWOOT = _Paths.KR_CHATWOOT;
}
abstract class _Paths {
@ -50,4 +51,5 @@ abstract class _Paths {
static const HI_HELP = '/hi_help';
static const HI_USER_INFO = '/hi-user-info';
static const HI_ANTI_LOST = '/hi-anti-lost';
static const KR_CHATWOOT = '/kr-chatwoot';
}