diff --git a/.idea/bytedesk-flutter.iml b/.idea/bytedesk-flutter.iml
index 57c1845..3669e1a 100644
--- a/.idea/bytedesk-flutter.iml
+++ b/.idea/bytedesk-flutter.iml
@@ -36,6 +36,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml
index 9a8fadf..4f30dba 100644
--- a/.idea/libraries/Dart_Packages.xml
+++ b/.idea/libraries/Dart_Packages.xml
@@ -5,7 +5,6 @@
-
@@ -13,14 +12,14 @@
-
+
-
+
@@ -28,7 +27,6 @@
-
@@ -36,7 +34,6 @@
-
@@ -44,7 +41,6 @@
-
@@ -52,7 +48,6 @@
-
@@ -60,7 +55,6 @@
-
@@ -68,7 +62,6 @@
-
@@ -76,7 +69,6 @@
-
@@ -84,7 +76,6 @@
-
@@ -92,7 +83,6 @@
-
@@ -100,7 +90,6 @@
-
@@ -108,7 +97,6 @@
-
@@ -116,7 +104,6 @@
-
@@ -124,7 +111,6 @@
-
@@ -132,7 +118,6 @@
-
@@ -140,7 +125,6 @@
-
@@ -148,7 +132,6 @@
-
@@ -156,7 +139,6 @@
-
@@ -164,7 +146,6 @@
-
@@ -172,7 +153,6 @@
-
@@ -180,7 +160,6 @@
-
@@ -188,7 +167,6 @@
-
@@ -196,7 +174,6 @@
-
@@ -204,7 +181,6 @@
-
@@ -212,7 +188,6 @@
-
@@ -220,7 +195,6 @@
-
@@ -228,7 +202,6 @@
-
@@ -236,7 +209,6 @@
-
@@ -245,14 +217,12 @@
-
-
@@ -260,7 +230,6 @@
-
@@ -268,7 +237,6 @@
-
@@ -276,7 +244,6 @@
-
@@ -284,7 +251,6 @@
-
@@ -292,7 +258,6 @@
-
@@ -300,7 +265,6 @@
-
@@ -308,7 +272,6 @@
-
@@ -316,7 +279,6 @@
-
@@ -324,7 +286,6 @@
-
@@ -332,7 +293,6 @@
-
@@ -340,14 +300,13 @@
-
+
-
@@ -355,7 +314,6 @@
-
@@ -363,7 +321,6 @@
-
@@ -371,7 +328,6 @@
-
@@ -379,7 +335,6 @@
-
@@ -388,7 +343,6 @@
-
@@ -396,14 +350,12 @@
-
-
@@ -411,7 +363,6 @@
-
@@ -419,7 +370,6 @@
-
@@ -427,7 +377,6 @@
-
@@ -435,7 +384,6 @@
-
@@ -443,7 +391,6 @@
-
@@ -451,7 +398,7 @@
-
+
@@ -459,7 +406,6 @@
-
@@ -467,7 +413,6 @@
-
@@ -475,7 +420,6 @@
-
@@ -483,7 +427,6 @@
-
@@ -491,7 +434,6 @@
-
@@ -499,7 +441,6 @@
-
@@ -507,7 +448,6 @@
-
@@ -515,14 +455,13 @@
-
+
-
@@ -530,7 +469,6 @@
-
@@ -538,7 +476,6 @@
-
@@ -546,7 +483,6 @@
-
@@ -554,7 +490,6 @@
-
@@ -562,7 +497,6 @@
-
@@ -570,7 +504,6 @@
-
@@ -578,7 +511,6 @@
-
@@ -586,7 +518,6 @@
-
@@ -594,7 +525,6 @@
-
@@ -602,7 +532,6 @@
-
@@ -610,7 +539,6 @@
-
@@ -618,7 +546,6 @@
-
@@ -626,7 +553,6 @@
-
@@ -634,7 +560,6 @@
-
@@ -642,7 +567,6 @@
-
@@ -650,7 +574,6 @@
-
@@ -658,7 +581,6 @@
-
@@ -666,7 +588,6 @@
-
@@ -674,7 +595,6 @@
-
@@ -682,7 +602,6 @@
-
@@ -690,7 +609,6 @@
-
@@ -698,7 +616,6 @@
-
@@ -706,7 +623,6 @@
-
@@ -714,7 +630,6 @@
-
@@ -722,7 +637,6 @@
-
@@ -730,7 +644,6 @@
-
@@ -738,7 +651,6 @@
-
@@ -746,7 +658,6 @@
-
@@ -754,7 +665,6 @@
-
@@ -762,7 +672,6 @@
-
@@ -770,7 +679,6 @@
-
@@ -778,7 +686,6 @@
-
@@ -786,7 +693,6 @@
-
@@ -794,7 +700,6 @@
-
@@ -802,7 +707,6 @@
-
@@ -810,7 +714,6 @@
-
@@ -818,7 +721,6 @@
-
@@ -827,14 +729,12 @@
-
-
@@ -842,7 +742,6 @@
-
@@ -850,7 +749,6 @@
-
@@ -858,7 +756,6 @@
-
@@ -866,7 +763,6 @@
-
@@ -874,7 +770,6 @@
-
@@ -882,7 +777,6 @@
-
@@ -890,7 +784,6 @@
-
@@ -898,7 +791,6 @@
-
@@ -906,7 +798,6 @@
-
@@ -914,7 +805,6 @@
-
@@ -922,7 +812,6 @@
-
@@ -930,7 +819,6 @@
-
@@ -938,7 +826,6 @@
-
@@ -946,7 +833,6 @@
-
@@ -954,7 +840,6 @@
-
@@ -962,7 +847,6 @@
-
@@ -970,7 +854,6 @@
-
@@ -978,7 +861,6 @@
-
@@ -986,7 +868,6 @@
-
@@ -994,7 +875,7 @@
-
+
@@ -1002,7 +883,6 @@
-
@@ -1010,7 +890,6 @@
-
@@ -1018,7 +897,6 @@
-
@@ -1026,21 +904,20 @@
-
+
-
+
-
@@ -1048,7 +925,6 @@
-
@@ -1056,7 +932,6 @@
-
@@ -1064,7 +939,6 @@
-
@@ -1072,7 +946,6 @@
-
@@ -1080,7 +953,6 @@
-
@@ -1088,7 +960,6 @@
-
@@ -1096,7 +967,6 @@
-
@@ -1104,7 +974,6 @@
-
@@ -1112,7 +981,6 @@
-
@@ -1120,7 +988,6 @@
-
@@ -1128,7 +995,6 @@
-
@@ -1136,7 +1002,6 @@
-
@@ -1144,7 +1009,6 @@
-
@@ -1152,7 +1016,6 @@
-
@@ -1160,7 +1023,6 @@
-
@@ -1168,7 +1030,6 @@
-
@@ -1176,7 +1037,6 @@
-
@@ -1184,152 +1044,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -1368,6 +1086,7 @@
+
@@ -1380,6 +1099,7 @@
+
@@ -1387,6 +1107,7 @@
+
@@ -1446,9 +1167,12 @@
+
+
+
@@ -1467,10 +1191,6 @@
-
-
-
-
diff --git a/bytedesk_demo/pubspec.yaml b/bytedesk_demo/pubspec.yaml
index cc19e1d..e18b392 100644
--- a/bytedesk_demo/pubspec.yaml
+++ b/bytedesk_demo/pubspec.yaml
@@ -44,7 +44,7 @@ dependencies:
# 振动 https://pub.dev/packages/vibration
# 针对报错fatal error: 'vibration/vibration-Swift.h' file not found #import , ld: library not found for -lvibration
# 请在ios/Podfile中添加:use_frameworks!
- vibration: ^1.7.3
+ vibration: ^1.7.5
# 在线客服 https://pub.dev/packages/bytedesk_kefu
#bytedesk_kefu: ^1.4.1
bytedesk_kefu:
diff --git a/bytedesk_kefu/lib/ui/chat/page/chat_kf_page.dart b/bytedesk_kefu/lib/ui/chat/page/chat_kf_page.dart
index 81bb4ec..83d16e0 100755
--- a/bytedesk_kefu/lib/ui/chat/page/chat_kf_page.dart
+++ b/bytedesk_kefu/lib/ui/chat/page/chat_kf_page.dart
@@ -114,8 +114,32 @@ class _ChatKFPageState extends State
// final _flutterVideoCompress = FlutterVideoCompress();
bool _isRequestingThread = true;
//
+ String goodName = '';
+ String goodPrice = '';
+ String goodUrl = '';
+ bool showGood = false;
@override
void initState() {
+ if (widget.custom != null &&
+ widget.custom!.trim().length > 0){
+ showGood = true;
+ Map json = jsonDecode(widget.custom??"");
+ json.forEach((key, value) {
+ //typeOne等所对应的数组数据
+ if(key=='title'){
+ goodName = value;
+ }
+ if(key=='price'){
+ goodPrice = value;
+ }
+ if(key=='imageUrl'){
+ goodUrl = value;
+ }
+ });
+ }
+
+
+
// BytedeskUtils.printLog('chat_kf_page init');
SpUtil.putBool(BytedeskConstants.isCurrentChatKfPage, true);
// 从历史会话或者顶部通知栏进入
@@ -191,7 +215,7 @@ class _ChatKFPageState extends State
Widget build(BuildContext context) {
super.build(context);
//
- return Scaffold(
+ return Scaffold (
appBar: AppBar(
title: Text(_title ?? '请求中, 请稍后...',style: TextStyle(color: Color(0xFF333333),fontSize: 16),),
backgroundColor: Colors.white,
@@ -260,11 +284,11 @@ class _ChatKFPageState extends State
BytedeskUtils.printLog('创建新会话');
// TODO: 参考拼多多,在发送按钮上方显示pop商品信息,用户确认之后才会发送商品信息
// 发送商品信息
- if (widget.custom != null &&
- widget.custom!.trim().length > 0) {
- _bdMqtt.sendCommodityMessage(
- widget.custom!, _currentThread!);
- }
+ // if (widget.custom != null &&
+ // widget.custom!.trim().length > 0) {
+ // _bdMqtt.sendCommodityMessage(
+ // widget.custom!, _currentThread!);
+ // }
// 发送附言消息
if (widget.postscript != null &&
widget.postscript!.trim().length > 0) {
@@ -278,11 +302,11 @@ class _ChatKFPageState extends State
// 加载本地历史消息
_appendMessage(state.threadResult.msg!);
// 发送商品信息
- if (widget.custom != null &&
- widget.custom!.trim().length > 0) {
- _bdMqtt.sendCommodityMessage(
- widget.custom!, _currentThread!);
- }
+ // if (widget.custom != null &&
+ // widget.custom!.trim().length > 0) {
+ // _bdMqtt.sendCommodityMessage(
+ // widget.custom!, _currentThread!);
+ // }
// 发送附言消息
if (widget.postscript != null &&
widget.postscript!.trim().length > 0) {
@@ -482,63 +506,133 @@ class _ChatKFPageState extends State
),
Text('会话请求中, 请稍后...',style: TextStyle(color: Color(0xFF333333)),)
]))
- : Container(
- alignment: Alignment.bottomCenter,
- color: Color(0xFFDEEEEEE),
- child: Column(
- children: [
- // 参考pull_to_refresh库中 QQChatList例子
- Expanded(
- //
- child: SmartRefresher(
- enablePullDown: false,
- onLoading: () async {
- // BytedeskUtils.printLog('TODO: 下拉刷新'); // 注意:方向跟默认是反着的
- // await Future.delayed(Duration(milliseconds: 1000));
- _getMessages(_page, _size);
- setState(() {});
- _refreshController.loadComplete();
- },
- footer: ClassicFooter(
- loadStyle: LoadStyle.ShowWhenLoading,
- ),
- enablePullUp: true,
- //
- child: Scrollable(
- controller: _scrollController,
- axisDirection: AxisDirection.up,
- viewportBuilder: (context, offset) {
- return ExpandedViewport(
- offset: offset,
+ : Stack(
+ alignment: Alignment.center,
+ children: [
+
+
+ Container(
+ alignment: Alignment.bottomCenter,
+ color: Color(0xFFDEEEEEE),
+ child: Column(
+ children: [
+ // 参考pull_to_refresh库中 QQChatList例子
+ Expanded(
+ //
+ child: SmartRefresher(
+ enablePullDown: false,
+ onLoading: () async {
+ // BytedeskUtils.printLog('TODO: 下拉刷新'); // 注意:方向跟默认是反着的
+ // await Future.delayed(Duration(milliseconds: 1000));
+ _getMessages(_page, _size);
+ setState(() {});
+ _refreshController.loadComplete();
+ },
+ footer: ClassicFooter(
+ loadStyle: LoadStyle.ShowWhenLoading,
+ ),
+ enablePullUp: true,
+ //
+ child: Scrollable(
+ controller: _scrollController,
axisDirection: AxisDirection.up,
- slivers: [
- SliverExpanded(),
- SliverList(
- delegate: SliverChildBuilderDelegate(
- (c, i) => _messages[i],
- childCount: _messages.length),
- )
- ],
- );
- },
+ viewportBuilder: (context, offset) {
+ return ExpandedViewport(
+ offset: offset,
+ axisDirection: AxisDirection.up,
+ slivers: [
+ SliverExpanded(),
+ SliverList(
+ delegate: SliverChildBuilderDelegate(
+ (c, i) => _messages[i],
+ childCount: _messages.length),
+ )
+ ],
+ );
+ },
+ ),
+ //
+ controller: _refreshController,
+ ),
+ ),
+ Divider(
+ height: 1.0,
),
- //
- controller: _refreshController,
- ),
+ Container(
+ decoration: BoxDecoration(
+ color: Colors.white
+ ),
+ // child: _textComposerWidget(),
+ child: _chatInput(),
+ ),
+
+ ],
),
- Divider(
- height: 1.0,
+ ),
+ showGood? Positioned(
+ top: 0,
+ child:Container(
+ width: 300,
+ margin: EdgeInsets.all(10),
+ padding: EdgeInsets.symmetric(vertical: 10),
+ decoration: BoxDecoration(
+ color: Color(0xFFe5f9ff).withOpacity(0.8),
+ borderRadius: BorderRadius.all(Radius.circular(5)),
),
- Container(
- decoration: BoxDecoration(
- color: Colors.white
- ),
- // child: _textComposerWidget(),
- child: _chatInput(),
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(width: 10,),
+ Image.network(goodUrl,width: 50,height: 50,),
+ SizedBox(width: 10,),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(goodName,style: TextStyle(color: Color(0xFF333333),fontSize: 15),),
+ SizedBox(height: 8,),
+ Row(
+ children: [
+ Text('¥ '+goodPrice,style: TextStyle(color: Colors.red,fontSize: 16),),
+ SizedBox(width: 30,),
+ GestureDetector(
+ onTap: (){
+ showGood = false;
+ setState(() {
+ });
+ _goodsSubmitted();
+ },
+ child: Container(
+ decoration: BoxDecoration(
+ color: Color(0xFFefefef),
+ borderRadius: BorderRadius.all(Radius.circular(4)),
+ border: Border.all(color:Color(0xFF999999) )
+ ),
+ padding: EdgeInsets.symmetric(horizontal: 5),
+ child: Text('发送链接',style: TextStyle(color: Color(0xFF333333)),),
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ Spacer(),
+ IconButton(
+ padding: const EdgeInsets.only(bottom: 30),
+ icon: Icon(
+ Icons.close,
+ ),
+ onPressed: () {
+ showGood = false;
+ setState(() {
+ });
+ },
+ ),
+ ],
),
- ],
- ),
- )));
+ ),):SizedBox(),
+ ],
+ )));
}
Widget _chatInput() {
@@ -665,7 +759,8 @@ class _ChatKFPageState extends State
icon: Icon(Icons.send),
onPressed: () => _handleSubmitted(_textController.text),
),
- )
+ ),
+
],
),
),
@@ -676,6 +771,33 @@ class _ChatKFPageState extends State
@override
bool get wantKeepAlive => true;
+ // 发送商品消息
+ void _goodsSubmitted() {
+
+ if (widget.custom != null &&
+ widget.custom!.trim().length > 0) {
+
+ if (_bdMqtt.isConnected()) {
+ if (_currentThread == null) {
+ Fluttertoast.showToast(msg: '请求客服中, 请稍后...');
+ return;
+ }
+ // 长连接正常情况下,调用长连接接口
+ _bdMqtt.sendCommodityMessage(
+ widget.custom!, _currentThread!);
+ } else {
+
+ }
+
+ }else{
+ return;
+ }
+
+
+ }
+
+
+
// 发送消息
void _handleSubmitted(String? text) {
_textController.clear();
diff --git a/bytedesk_kefu/pubspec.yaml b/bytedesk_kefu/pubspec.yaml
index 3303d47..3cf7a7f 100644
--- a/bytedesk_kefu/pubspec.yaml
+++ b/bytedesk_kefu/pubspec.yaml
@@ -71,7 +71,7 @@ dependencies:
# 视频压缩 https://pub.dev/packages/flutter_video_compress/install
# flutter_video_compress: ^0.3.7+8
# 振动 https://pub.dev/packages/vibration
- # vibration: ^1.7.3
+ # vibration: ^1.7.5
# 播放语音
# https://pub.dev/packages/audioplayers
# audioplayers: ^0.16.1