master
jack ning 3 years ago
parent 31a0cd7c76
commit 9ffcd54bd1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
@ -12,7 +12,7 @@
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@android:color/white</item>
</style>
</resources>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path name="root" path="" />
<files-path name="files" path="" />
<cache-path name="cache" path="" />
<external-path name="external" path="" />
<external-files-path name="external_files" path="" />
<external-cache-path name="external_cache" path="" />
</paths>
</resources>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

@ -50,7 +50,7 @@ PODS:
- FMDB/standard (2.7.5)
- image_gallery_saver (1.5.0):
- Flutter
- image_picker (0.0.1):
- image_picker_ios (0.0.1):
- Flutter
- package_info (0.0.1):
- Flutter
@ -84,7 +84,7 @@ DEPENDENCIES:
- Flutter (from `Flutter`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
@ -120,8 +120,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/fluttertoast/ios"
image_gallery_saver:
:path: ".symlinks/plugins/image_gallery_saver/ios"
image_picker:
:path: ".symlinks/plugins/image_picker/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
package_info:
:path: ".symlinks/plugins/package_info/ios"
path_provider_ios:
@ -151,7 +151,7 @@ SPEC CHECKSUMS:
fluttertoast: 16fbe6039d06a763f3533670197d01fc73459037
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
image_gallery_saver: 259eab68fb271cfd57d599904f7acdc7832e7ef2
image_picker: 541dcbb3b9cf32d87eacbd957845d8651d6c62c3
image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e

@ -1,122 +1,158 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
"images": [
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-20@2x.png",
"scale": "2x"
},
{
"size": "20x20",
"idiom": "iphone",
"filename": "icon-20@3x.png",
"scale": "3x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29@2x.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "icon-29@3x.png",
"scale": "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-40@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "icon-40@3x.png",
"scale": "3x"
},
{
"size": "57x57",
"idiom": "iphone",
"filename": "icon-57.png",
"scale": "1x"
},
{
"size": "57x57",
"idiom": "iphone",
"filename": "icon-57@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-60@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "icon-60@3x.png",
"scale": "3x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "icon-20-ipad.png",
"scale": "1x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "icon-20@2x-ipad.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-29-ipad.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "icon-29@2x-ipad.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-40.png",
"scale": "1x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "icon-40@2x.png",
"scale": "2x"
},
{
"size": "50x50",
"idiom": "ipad",
"filename": "icon-50.png",
"scale": "1x"
},
{
"size": "50x50",
"idiom": "ipad",
"filename": "icon-50@2x.png",
"scale": "2x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72.png",
"scale": "1x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72@2x.png",
"scale": "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76.png",
"scale": "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76@2x.png",
"scale": "2x"
},
{
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "icon-83.5@2x.png",
"scale": "2x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "icon-1024.png",
"scale": "1x"
}
],
"info": {
"version": 1,
"author": "icon.wuruihong.com"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -74,7 +74,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
//
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) {
return const ChatTypePage();
return ChatTypePage();
}));
},
),

@ -15,10 +15,10 @@ class ChatTypePage extends StatefulWidget {
class _ChatTypePageState extends State<ChatTypePage> {
// ->- IDwId, wid
// 访
final String _workGroupWid = "201807171659201"; //
final String _workGroupWidRobot = "201809061716221"; // ,
String _workGroupWid = "201807171659201"; //
String _workGroupWidRobot = "201809061716221"; // ,
//
final String _agentUid = "201808221551193";
String _agentUid = "201808221551193";
//
String _unreadMessageCount = "0";
//
@ -29,6 +29,7 @@ class _ChatTypePageState extends State<ChatTypePage> {
//
super.initState();
}
//
@override
Widget build(BuildContext context) {
@ -41,12 +42,15 @@ class _ChatTypePageState extends State<ChatTypePage> {
children: ListTile.divideTiles(context: context, tiles: [
ListTile(
title: Text('未读消息数目:' + _unreadMessageCount),
trailing: const Icon(Icons.keyboard_arrow_right),
// trailing: Icon(Icons.keyboard_arrow_right),
onTap: () {
//
_getUnreadCountVisitor();
},
),
Container(
height: 20,
),
ListTile(
title: const Text('技能组客服'),
trailing: const Icon(Icons.keyboard_arrow_right),
@ -180,9 +184,9 @@ class _ChatTypePageState extends State<ChatTypePage> {
});
BytedeskKefu.startAppointedChatShopCallback(
context, _agentUid, "指定一对一客服-电商-回调", custom, (value) {
print('value为custom参数原样返回 $value');
//
});
print('value为custom参数原样返回 $value');
//
});
},
),
ListTile(

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
//
class HistoryThreadPage extends StatefulWidget {
HistoryThreadPage({Key? key}) : super(key: key);
const HistoryThreadPage({Key? key}) : super(key: key);
@override
_HistoryThreadPageState createState() => _HistoryThreadPageState();
@ -27,12 +27,12 @@ class _HistoryThreadPageState extends State<HistoryThreadPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('历史会话'),
title: const Text('历史会话'),
elevation: 0,
),
body: RefreshIndicator(
child: ListView.builder(
padding: EdgeInsets.all(8.0),
padding: const EdgeInsets.all(8.0),
itemBuilder: (_, int index) => ListTile(
leading: Image.network(_historyThreadList[index].avatar!),
title: Text('${_historyThreadList[index].nickname}, ${_historyThreadList[index].timestamp}'),

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
// 线
class OnlineStatusPage extends StatefulWidget {
OnlineStatusPage({Key? key}) : super(key: key);
const OnlineStatusPage({Key? key}) : super(key: key);
@override
_OnlineStatusPageState createState() => _OnlineStatusPageState();
@ -32,7 +32,7 @@ class _OnlineStatusPageState extends State<OnlineStatusPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('在线状态'),
title: const Text('在线状态'),
elevation: 0,
),
body: ListView(
@ -40,14 +40,14 @@ class _OnlineStatusPageState extends State<OnlineStatusPage> {
context: context,
tiles: [
ListTile(
title: Text('技能组在线状态'),
title: const Text('技能组在线状态'),
subtitle: Text(_workGroupStatus),
onTap: () {
_getWorkGroupStatus();
},
),
ListTile(
title: Text('客服在线状态'),
title: const Text('客服在线状态'),
subtitle: Text(_agentStatus),
onTap: () {
_getAgentStatus();

@ -4,7 +4,7 @@ import 'package:list_tile_switch/list_tile_switch.dart';
//
class SettingPage extends StatefulWidget {
SettingPage({Key? key}) : super(key: key);
const SettingPage({Key? key}) : super(key: key);
@override
_SettingPageState createState() => _SettingPageState();
@ -27,7 +27,7 @@ class _SettingPageState extends State<SettingPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('消息设置'),
title: const Text('消息设置'),
elevation: 0,
),
body: ListView(
@ -42,7 +42,7 @@ class _SettingPageState extends State<SettingPage> {
});
BytedeskKefu.setPlayAudioOnSendMessage(value);
},
title: Text('发送消息时播放声音'),
title: const Text('发送消息时播放声音'),
),
ListTileSwitch(
value: _playAudioOnReceiveMessage,
@ -52,7 +52,7 @@ class _SettingPageState extends State<SettingPage> {
});
BytedeskKefu.setPlayAudioOnReceiveMessage(value);
},
title: Text('收到消息时播放声音'),
title: const Text('收到消息时播放声音'),
),
ListTileSwitch(
value: _vibrateOnReceiveMessage,
@ -63,7 +63,7 @@ class _SettingPageState extends State<SettingPage> {
// AndroidManifest.xml<uses-permission android:name="android.permission.VIBRATE"/>
BytedeskKefu.setVibrateOnReceiveMessage(value);
},
title: Text('收到消息时振动'),
title: const Text('收到消息时振动'),
),
],
).toList()),

@ -6,13 +6,12 @@ import 'package:fluttertoast/fluttertoast.dart';
// anonymousLogin
// -APP
class UserInfoPage extends StatefulWidget {
UserInfoPage({Key? key}) : super(key: key);
const UserInfoPage({Key? key}) : super(key: key);
@override
_UserInfoPageState createState() => _UserInfoPageState();
}
class _UserInfoPageState extends State<UserInfoPage> {
String _uid = ''; // uid
String _username = ''; //
@ -29,7 +28,7 @@ class _UserInfoPageState extends State<UserInfoPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('用户信息'),
title: const Text('用户信息'),
elevation: 0,
),
body: ListView(
@ -37,7 +36,15 @@ class _UserInfoPageState extends State<UserInfoPage> {
context: context,
tiles: [
ListTile(
title: Text('设置昵称(见代码)'),
title: const Text('唯一uid'),
subtitle: Text(_uid),
),
ListTile(
title: const Text('用户名'),
subtitle: Text(_username),
),
ListTile(
title: const Text('设置昵称(见代码)'),
subtitle: Text(_nickname),
onTap: () {
//
@ -50,14 +57,14 @@ class _UserInfoPageState extends State<UserInfoPage> {
height: 30,
width: 30,
),
title: Text('设置头像(见代码)'),
title: const Text('设置头像(见代码)'),
onTap: () {
//
_setAvatar();
},
),
ListTile(
title: Text('设置备注(见代码)'),
title: const Text('设置备注(见代码)'),
subtitle: Text(_description),
onTap: () {
//
@ -94,7 +101,7 @@ class _UserInfoPageState extends State<UserInfoPage> {
}
void _setAvatar() {
// url-
// url-
String myavatarurl =
'https://chainsnow.oss-cn-shenzhen.aliyuncs.com/avatars/visitor_default_avatar.png'; // url
BytedeskKefu.updateAvatar(myavatarurl).then((user) => {

@ -46,7 +46,7 @@ dependencies:
# 请在ios/Podfile中添加use_frameworks!
vibration: ^1.7.3
# 在线客服 https://pub.dev/packages/bytedesk_kefu
bytedesk_kefu: ^1.2.2
bytedesk_kefu: ^1.2.4
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.

Loading…
Cancel
Save