feat: 增加客服2
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import 'package:get/get.dart';
|
||||
import '../controllers/kr_chatwoot_controller.dart';
|
||||
|
||||
/// 客服2(Chatwoot)依赖绑定
|
||||
class KRChatwootBinding extends Bindings {
|
||||
@override
|
||||
void dependencies() {
|
||||
Get.lazyPut<KRChatwootController>(
|
||||
() => KRChatwootController(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'package:get/get.dart';
|
||||
|
||||
/// 客服2(Chatwoot)控制器
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
/// 客服2(Chatwoot)视图页面
|
||||
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();
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user