ZCM 5 年之前
父節點
當前提交
4421b6d65b
共有 19 個文件被更改,包括 279 次插入103 次删除
  1. +1
    -1
      .flutter-plugins-dependencies
  2. +6
    -12
      ios/Podfile.lock
  3. +11
    -3
      lib/chat/util_keyboard.dart
  4. +1
    -1
      lib/home/ConversActionPage.dart
  5. +31
    -29
      lib/home/ProfilePage.dart
  6. +11
    -4
      lib/home/SystemEditPage.dart
  7. +2
    -0
      lib/home/group_setting.dart
  8. +3
    -17
      lib/home/homeMain.dart
  9. +1
    -0
      lib/main.dart
  10. +76
    -0
      lib/proto/chat.pb.dart
  11. +18
    -0
      lib/proto/chat.pbjson.dart
  12. +15
    -0
      lib/proto/chat.proto
  13. +18
    -10
      lib/utils/image_util.dart
  14. +62
    -13
      lib/utils/msgHandler.dart
  15. +1
    -0
      lib/utils/receive_share_file.dart
  16. +12
    -4
      lib/utils/screen_shot.dart
  17. +1
    -0
      lib/utils/upload_util.dart
  18. +7
    -7
      pubspec.lock
  19. +2
    -2
      pubspec.yaml

+ 1
- 1
.flutter-plugins-dependencies 查看文件

@@ -1 +1 @@
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"agora_rtc_engine","dependencies":[]},{"name":"amap_location","dependencies":[]},{"name":"android_intent","dependencies":[]},{"name":"app_installer","dependencies":[]},{"name":"apple_sign_in","dependencies":[]},{"name":"audioplayer","dependencies":[]},{"name":"auto_orientation","dependencies":[]},{"name":"city_pickers","dependencies":[]},{"name":"connectivity","dependencies":[]},{"name":"easy_contact_picker","dependencies":[]},{"name":"file_picker","dependencies":[]},{"name":"flutter_app_badger","dependencies":[]},{"name":"flutter_audio_recorder","dependencies":[]},{"name":"flutter_bugly","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"flutter_ijkplayer","dependencies":[]},{"name":"flutter_image_compress","dependencies":[]},{"name":"flutter_inapp_purchase","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_qr_reader","dependencies":["image_picker"]},{"name":"flutter_webview_plugin","dependencies":[]},{"name":"fluwx_no_pay","dependencies":[]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_maps_flutter","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_gallery_saver","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jpush_flutter","dependencies":[]},{"name":"keyboard_utils","dependencies":[]},{"name":"location","dependencies":[]},{"name":"location_permissions","dependencies":[]},{"name":"open_file","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"photo_manager","dependencies":[]},{"name":"receive_sharing_intent","dependencies":[]},{"name":"share","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":[]},{"name":"video_player","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"wifi_info_plugin","dependencies":[]}]}
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"agora_rtc_engine","dependencies":[]},{"name":"amap_location","dependencies":[]},{"name":"android_intent","dependencies":[]},{"name":"app_installer","dependencies":[]},{"name":"apple_sign_in","dependencies":[]},{"name":"audioplayer","dependencies":[]},{"name":"auto_orientation","dependencies":[]},{"name":"city_pickers","dependencies":[]},{"name":"connectivity","dependencies":[]},{"name":"easy_contact_picker","dependencies":[]},{"name":"file_picker","dependencies":[]},{"name":"flutter_app_badger","dependencies":[]},{"name":"flutter_audio_recorder","dependencies":[]},{"name":"flutter_bugly","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"flutter_ijkplayer","dependencies":[]},{"name":"flutter_inapp_purchase","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_native_image","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_qr_reader","dependencies":["image_picker"]},{"name":"flutter_webview_plugin","dependencies":[]},{"name":"fluwx_no_pay","dependencies":[]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_maps_flutter","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_gallery_saver","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jpush_flutter","dependencies":[]},{"name":"keyboard_utils","dependencies":[]},{"name":"location","dependencies":[]},{"name":"location_permissions","dependencies":[]},{"name":"open_file","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"photo_manager","dependencies":[]},{"name":"receive_sharing_intent","dependencies":[]},{"name":"share","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":[]},{"name":"video_player","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"wifi_info_plugin","dependencies":[]}]}

+ 6
- 12
ios/Podfile.lock 查看文件

@@ -54,13 +54,12 @@ PODS:
- flutter_ijkplayer (0.0.1):
- Flutter
- FlutterIJK (~> 0.1.0)
- flutter_image_compress (0.0.1):
- Flutter
- Mantle
- flutter_inapp_purchase (0.0.1):
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_native_image (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- flutter_qr_reader (0.0.1):
@@ -113,9 +112,6 @@ PODS:
- Flutter
- location_permissions (2.0.3):
- Flutter
- Mantle (2.1.0):
- Mantle/extobjc (= 2.1.0)
- Mantle/extobjc (2.1.0)
- open_file (0.0.1):
- Flutter
- package_info (0.0.1):
@@ -169,9 +165,9 @@ DEPENDENCIES:
- flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`)
- flutter_facebook_login (from `.symlinks/plugins/flutter_facebook_login/ios`)
- flutter_ijkplayer (from `.symlinks/plugins/flutter_ijkplayer/ios`)
- flutter_image_compress (from `.symlinks/plugins/flutter_image_compress/ios`)
- flutter_inapp_purchase (from `.symlinks/plugins/flutter_inapp_purchase/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_native_image (from `.symlinks/plugins/flutter_native_image/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- flutter_qr_reader (from `.symlinks/plugins/flutter_qr_reader/ios`)
- flutter_webview_plugin (from `.symlinks/plugins/flutter_webview_plugin/ios`)
@@ -216,7 +212,6 @@ SPEC REPOS:
- JCore
- JPush
- libwebp
- Mantle
- Reachability
- TOCropViewController

@@ -255,12 +250,12 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_facebook_login/ios"
flutter_ijkplayer:
:path: ".symlinks/plugins/flutter_ijkplayer/ios"
flutter_image_compress:
:path: ".symlinks/plugins/flutter_image_compress/ios"
flutter_inapp_purchase:
:path: ".symlinks/plugins/flutter_inapp_purchase/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_native_image:
:path: ".symlinks/plugins/flutter_native_image/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
flutter_qr_reader:
@@ -344,9 +339,9 @@ SPEC CHECKSUMS:
flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3
flutter_facebook_login: cfb5659f686b1c575ef205c6b6fd20db9679d3c4
flutter_ijkplayer: ef9006131553deb6d8ae6d7fbd3bcbf93b135930
flutter_image_compress: f69d0e0e078ce52b4810695593bc861ee319ae7d
flutter_inapp_purchase: 5c6a1ac3f11b11d0c8c0321c0c41c1f05805e4c8
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
flutter_native_image: 9c0b7451838484458e5b0fae007b86a4c2d4bdfe
flutter_plugin_android_lifecycle: 47de533a02850f070f5696a623995e93eddcdb9b
flutter_qr_reader: 254fd9eea45a65ef461e050d6607daf9cfb753e8
flutter_webview_plugin: ed9e8a6a96baf0c867e90e1bce2673913eeac694
@@ -367,7 +362,6 @@ SPEC CHECKSUMS:
libwebp: 057912d6d0abfb6357d8bb05c0ea470301f5d61e
location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740
location_permissions: 195ff2a1182fa9029ef3f2653156961ee5a1e40b
Mantle: 2fa750afa478cd625a94230fbf1c13462f29395b
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
package_info: 48b108e75b8802c2d5e126f208ef540561c98aef
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d


+ 11
- 3
lib/chat/util_keyboard.dart 查看文件

@@ -16,12 +16,14 @@ import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/data/constants.dart';
import 'package:chat/utils/app_navigator.dart';
import 'package:chat/utils/blacklist_mgr.dart';
import 'package:chat/utils/file_cache_mgr.dart';
import 'package:chat/utils/image_util.dart';
import 'package:chat/utils/msgHandler.dart';
import 'package:chat/utils/screen.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
//import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:oktoast/oktoast.dart';
@@ -387,8 +389,14 @@ class _UtilKeyboardState extends State<UtilKeyboard> {
if (thumbnail.length > ImgSizeLimit) {
print('图片较大 ${thumbnail.length}');
thumbnail =
await FlutterImageCompress.compressWithList(thumbnail, quality: 10);
File file =await FileCacheMgr().writeFile(DateTime.now().millisecondsSinceEpoch.toString(),thumbnail);
File compressedFile = await FlutterNativeImage.compressImage(file.path,
quality: 20, percentage: 10);
thumbnail =compressedFile.readAsBytesSync().toList();
// thumbnail = await FlutterImageCompress.compressWithList(thumbnail, quality: 10);
print('压缩后 ${thumbnail.length}');
}


+ 1
- 1
lib/home/ConversActionPage.dart 查看文件

@@ -876,7 +876,7 @@ class _ConversActionPageState extends State<ConversActionPage>
@override
Widget build(BuildContext context) {
List<GroupInfoModel> groupList = GroupInfoMgr().groupInfoList;
// List<GroupInfoModel> groupList = GroupInfoMgr().groupInfoList;
return Scaffold(
backgroundColor: Colors.white,


+ 31
- 29
lib/home/ProfilePage.dart 查看文件

@@ -2296,6 +2296,35 @@ class _ProfilePageState extends State<ProfilePage>
height: 137,
child: Column(
children: <Widget>[
InkWell(
onTap: () async {
Navigator.of(context).pop();
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
return AddFriendPage(
userId: userInfo.userId,
pageType:
SendMessagePageType.Remark,
originalName: Provider.of<
RefNameProvider>(
context)
.getRefName(userInfo.userId,
userInfo.nickName));
},
),
);
},
child: Container(
alignment: Alignment.center,
height: 45,
child: Text(I18n.of(context).Remark,
textScaleFactor: 1.0,
style: TextStyle(
fontSize: 18,
color: Constants
.BlackTextColor)))),
Divider(height: 1),
InkWell(
child: Container(
height: 45,
@@ -2345,35 +2374,8 @@ class _ProfilePageState extends State<ProfilePage>
fontSize: 18,
color: Constants
.BlackTextColor)))),
Divider(height: 1),
InkWell(
onTap: () async {
Navigator.of(context).pop();
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
return AddFriendPage(
userId: userInfo.userId,
pageType:
SendMessagePageType.Remark,
originalName: Provider.of<
RefNameProvider>(
context)
.getRefName(userInfo.userId,
userInfo.nickName));
},
),
);
},
child: Container(
alignment: Alignment.center,
height: 45,
child: Text(I18n.of(context).Remark,
textScaleFactor: 1.0,
style: TextStyle(
fontSize: 18,
color: Constants
.BlackTextColor)))),
],
),
),


+ 11
- 4
lib/home/SystemEditPage.dart 查看文件

@@ -42,10 +42,10 @@ BoxDecoration getCardDecoration() {
class SystemEditPage extends StatefulWidget {
SystemEditPage({Key key}) : super(key: key);
_SystemEditPageState createState() => _SystemEditPageState();
SystemEditPageState createState() => SystemEditPageState();
}
class _SystemEditPageState extends State<SystemEditPage> {
class SystemEditPageState extends State<SystemEditPage> {
static const Separate_Size = 15.0;
String _selectType = UserData().language.toString();
bool soundPlayMode = false;
@@ -510,12 +510,19 @@ class _SystemEditPageState extends State<SystemEditPage> {
void _buildConfirmLogout() {
CustomUI.buildOneConfirm(
context, I18n.of(context).exit, I18n.of(context).determine, () {
LocalNotificationUtil().removeAlias();
userLogout();
HttpUtil().postLoginOut(context);
ReceiveShareFile.dispose();
});
}
static userLogout(){
LocalNotificationUtil().removeAlias();
ReceiveShareFile.dispose();
}
//退出登陆
Widget _buildLogout() {
return Container(


+ 2
- 0
lib/home/group_setting.dart 查看文件

@@ -264,6 +264,7 @@ class GroupSettingState extends State<GroupSetting> {
setState(() {
showGroupFriendNickname = val;
widget.groupInfoModel.updateShowNameSwitch(val);
MsgHandler.setGroupIsShowMenberNiceNameReq(widget.groupInfoModel.sessionId, val);
});
}),

@@ -565,6 +566,7 @@ class GroupSettingState extends State<GroupSetting> {
child: Text(
refName,
textScaleFactor: 1.0,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 11, color: Color(0xff818181)),
maxLines: 1,
overflow: TextOverflow.ellipsis,


+ 3
- 17
lib/home/homeMain.dart 查看文件

@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:chat/data/UserData.dart';
import 'package:chat/data/constants.dart';
import 'package:chat/generated/i18n.dart';
import 'package:chat/home/SystemEditPage.dart';
import 'package:chat/home/find_page.dart';
import 'package:chat/home/realtimehelper/real_time_helper_page.dart';
import 'package:chat/home/unread_dot_widget.dart';
@@ -300,6 +301,7 @@ class _HomeMainState extends State<HomeMain> {
loginOut(args) {
HttpUtil().postLoginOut(context);
SystemEditPageState.userLogout();
showToast(I18n.of(context).otherLogin);
}
@@ -368,14 +370,6 @@ class _HomeMainState extends State<HomeMain> {
// ];
_navigationViews = [
// NavigationIconView(
// title: _titles[2],
// icon: IconData(
// 0xe67c,
// fontFamily: 'iconfont',
// ),
// isShowdot: true,
// iconSize: 29),
NavigationIconView(
title: _titles[1],
isShowdot: true,
@@ -403,15 +397,6 @@ class _HomeMainState extends State<HomeMain> {
),
isCenter: true,
iconSize: 31),
// NavigationIconView(
// title: _titles[1],
// isShowdot: true,
// icon: IconData(
// 0xe60b,
// fontFamily: 'iconfont',
// ),
// type: 6,
// iconSize: 26.5),
NavigationIconView(
title: _titles[3],
@@ -421,6 +406,7 @@ class _HomeMainState extends State<HomeMain> {
fontFamily: 'iconfont',
),
type: 4,
isShowdot: true,
iconSize: 26.5),
NavigationIconView(


+ 1
- 0
lib/main.dart 查看文件

@@ -138,6 +138,7 @@ Map<String, int> language = {
'zh_Hant_US': LanguageType.TraditionalChinese,
'zh_Hans_CN': LanguageType.SimplifiedChinese,
'zh_Hans_US': LanguageType.SimplifiedChinese,
'zh_Hans_MO': LanguageType.SimplifiedChinese,
'zh_CN': LanguageType.SimplifiedChinese,
'ko_KR': LanguageType.Korean,
'ko_KP': LanguageType.Korean,


+ 76
- 0
lib/proto/chat.pb.dart 查看文件

@@ -1194,6 +1194,7 @@ class GroupMember extends $pb.GeneratedMessage {
..e<GroupMemberIdentity>(3, 'identity', $pb.PbFieldType.OE, GroupMemberIdentity.identityNormal, GroupMemberIdentity.valueOf, GroupMemberIdentity.values)
..aOB(4, 'messageFree')
..aOB(5, 'effectiveUser')
..aOB(6, 'isShowMenberNiceName')
..hasRequiredFields = false
;

@@ -1235,6 +1236,11 @@ class GroupMember extends $pb.GeneratedMessage {
set effectiveUser($core.bool v) { $_setBool(4, v); }
$core.bool hasEffectiveUser() => $_has(4);
void clearEffectiveUser() => clearField(5);

$core.bool get isShowMenberNiceName => $_get(5, false);
set isShowMenberNiceName($core.bool v) { $_setBool(5, v); }
$core.bool hasIsShowMenberNiceName() => $_has(5);
void clearIsShowMenberNiceName() => clearField(6);
}

class GroupInfo extends $pb.GeneratedMessage {
@@ -2203,3 +2209,73 @@ class SetGroupMasterMessageFreeRes extends $pb.GeneratedMessage {
void clearMessageFree() => clearField(3);
}

class SetGroupIsShowMenberNiceNameReq extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo('SetGroupIsShowMenberNiceNameReq', package: const $pb.PackageName('yl_pb'))
..a<$core.int>(1, 'groupId', $pb.PbFieldType.OU3)
..aOB(2, 'isShowMenberNiceName')
..hasRequiredFields = false
;

SetGroupIsShowMenberNiceNameReq._() : super();
factory SetGroupIsShowMenberNiceNameReq() => create();
factory SetGroupIsShowMenberNiceNameReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory SetGroupIsShowMenberNiceNameReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
SetGroupIsShowMenberNiceNameReq clone() => SetGroupIsShowMenberNiceNameReq()..mergeFromMessage(this);
SetGroupIsShowMenberNiceNameReq copyWith(void Function(SetGroupIsShowMenberNiceNameReq) updates) => super.copyWith((message) => updates(message as SetGroupIsShowMenberNiceNameReq));
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static SetGroupIsShowMenberNiceNameReq create() => SetGroupIsShowMenberNiceNameReq._();
SetGroupIsShowMenberNiceNameReq createEmptyInstance() => create();
static $pb.PbList<SetGroupIsShowMenberNiceNameReq> createRepeated() => $pb.PbList<SetGroupIsShowMenberNiceNameReq>();
static SetGroupIsShowMenberNiceNameReq getDefault() => _defaultInstance ??= create()..freeze();
static SetGroupIsShowMenberNiceNameReq _defaultInstance;

$core.int get groupId => $_get(0, 0);
set groupId($core.int v) { $_setUnsignedInt32(0, v); }
$core.bool hasGroupId() => $_has(0);
void clearGroupId() => clearField(1);

$core.bool get isShowMenberNiceName => $_get(1, false);
set isShowMenberNiceName($core.bool v) { $_setBool(1, v); }
$core.bool hasIsShowMenberNiceName() => $_has(1);
void clearIsShowMenberNiceName() => clearField(2);
}

class SetGroupIsShowMenberNiceNameRes extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo('SetGroupIsShowMenberNiceNameRes', package: const $pb.PackageName('yl_pb'))
..a<$core.int>(1, 'errorCode', $pb.PbFieldType.O3)
..a<$core.int>(2, 'groupId', $pb.PbFieldType.OU3)
..aOB(3, 'isShowMenberNiceName')
..hasRequiredFields = false
;

SetGroupIsShowMenberNiceNameRes._() : super();
factory SetGroupIsShowMenberNiceNameRes() => create();
factory SetGroupIsShowMenberNiceNameRes.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory SetGroupIsShowMenberNiceNameRes.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
SetGroupIsShowMenberNiceNameRes clone() => SetGroupIsShowMenberNiceNameRes()..mergeFromMessage(this);
SetGroupIsShowMenberNiceNameRes copyWith(void Function(SetGroupIsShowMenberNiceNameRes) updates) => super.copyWith((message) => updates(message as SetGroupIsShowMenberNiceNameRes));
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static SetGroupIsShowMenberNiceNameRes create() => SetGroupIsShowMenberNiceNameRes._();
SetGroupIsShowMenberNiceNameRes createEmptyInstance() => create();
static $pb.PbList<SetGroupIsShowMenberNiceNameRes> createRepeated() => $pb.PbList<SetGroupIsShowMenberNiceNameRes>();
static SetGroupIsShowMenberNiceNameRes getDefault() => _defaultInstance ??= create()..freeze();
static SetGroupIsShowMenberNiceNameRes _defaultInstance;

$core.int get errorCode => $_get(0, 0);
set errorCode($core.int v) { $_setSignedInt32(0, v); }
$core.bool hasErrorCode() => $_has(0);
void clearErrorCode() => clearField(1);

$core.int get groupId => $_get(1, 0);
set groupId($core.int v) { $_setUnsignedInt32(1, v); }
$core.bool hasGroupId() => $_has(1);
void clearGroupId() => clearField(2);

$core.bool get isShowMenberNiceName => $_get(2, false);
set isShowMenberNiceName($core.bool v) { $_setBool(2, v); }
$core.bool hasIsShowMenberNiceName() => $_has(2);
void clearIsShowMenberNiceName() => clearField(3);
}


+ 18
- 0
lib/proto/chat.pbjson.dart 查看文件

@@ -372,6 +372,7 @@ const GroupMember$json = const {
const {'1': 'Identity', '3': 3, '4': 1, '5': 14, '6': '.yl_pb.GroupMemberIdentity', '10': 'Identity'},
const {'1': 'MessageFree', '3': 4, '4': 1, '5': 8, '10': 'MessageFree'},
const {'1': 'EffectiveUser', '3': 5, '4': 1, '5': 8, '10': 'EffectiveUser'},
const {'1': 'IsShowMenberNiceName', '3': 6, '4': 1, '5': 8, '10': 'IsShowMenberNiceName'},
],
};

@@ -618,3 +619,20 @@ const SetGroupMasterMessageFreeRes$json = const {
],
};

const SetGroupIsShowMenberNiceNameReq$json = const {
'1': 'SetGroupIsShowMenberNiceNameReq',
'2': const [
const {'1': 'GroupId', '3': 1, '4': 1, '5': 13, '10': 'GroupId'},
const {'1': 'IsShowMenberNiceName', '3': 2, '4': 1, '5': 8, '10': 'IsShowMenberNiceName'},
],
};

const SetGroupIsShowMenberNiceNameRes$json = const {
'1': 'SetGroupIsShowMenberNiceNameRes',
'2': const [
const {'1': 'ErrorCode', '3': 1, '4': 1, '5': 5, '10': 'ErrorCode'},
const {'1': 'GroupId', '3': 2, '4': 1, '5': 13, '10': 'GroupId'},
const {'1': 'IsShowMenberNiceName', '3': 3, '4': 1, '5': 8, '10': 'IsShowMenberNiceName'},
],
};


+ 15
- 0
lib/proto/chat.proto 查看文件

@@ -279,6 +279,7 @@ message GroupMember {
optional GroupMemberIdentity Identity = 3; //成员身份
optional bool MessageFree = 4; //消息打扰标记
optional bool EffectiveUser = 5; //有效用户 移除群成员不直接删除数据而是修改有效标签
optional bool IsShowMenberNiceName =6; //是否显示成员昵称
}
//群结构
message GroupInfo {
@@ -463,4 +464,18 @@ message SetGroupMasterMessageFreeRes{
optional int32 ErrorCode = 1; //详见错误码文档
optional uint32 GroupId = 2; //群信息
optional bool MessageFree = 3; //消息免打扰
}


//MsgId=229 消息免打扰
message SetGroupIsShowMenberNiceNameReq{
optional uint32 GroupId = 1; //群信息
optional bool IsShowMenberNiceName = 2; //消息免打扰
}

//MsgId=230 消息免打扰
message SetGroupIsShowMenberNiceNameRes{
optional int32 ErrorCode = 1; //详见错误码文档
optional uint32 GroupId = 2; //群信息
optional bool IsShowMenberNiceName = 3; //消息免打扰
}

+ 18
- 10
lib/utils/image_util.dart 查看文件

@@ -9,7 +9,8 @@ import 'package:chat/utils/screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
//import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
import '../r.dart';
import 'file_cache_mgr.dart';
@@ -67,16 +68,23 @@ class WidgetUtil {
}
static getCompressImg(String imgPath) async {
var compressImg = await FlutterImageCompress.compressWithFile(imgPath,
quality: 20, minWidth: Screen.width.toInt());
print('图片压缩完毕 : ${compressImg.length}');
if (compressImg.length > ImgSizeLimit) {
//仍大于,再压缩一次
compressImg = await FlutterImageCompress.compressWithFile(imgPath,
quality: 20, minWidth: (Screen.width * 0.5).toInt());
}
return compressImg;
File compressedFile = await FlutterNativeImage.compressImage(imgPath,
quality: 20, percentage: 25);
var k =compressedFile.readAsBytesSync().toList();
print('A图片压缩完毕 : ${k.length}');
// compressedFile.
// var compressImg = await FlutterImageCompress.compressWithFile(imgPath,
// quality: 20, minWidth: Screen.width.toInt());
// print('B图片压缩完毕 : ${compressImg.length}');
// if (compressImg.length > ImgSizeLimit) {
// //仍大于,再压缩一次
// compressImg = await FlutterImageCompress.compressWithFile(imgPath,
// quality: 20, minWidth: (Screen.width * 0.5).toInt());
// }
return k;
}
///Get the coordinates of the widget on the screen.Widgets must be rendered completely.


+ 62
- 13
lib/utils/msgHandler.dart 查看文件

@@ -252,6 +252,9 @@ class MsgHandler {
}
static int tempGroupId=0;
static int mLastClickTime = 0;
static int timeInterval = 2500;
// static int receivedCount=0;
static handlerReceiveMsg(PushChat chat) async {
bool isGroup = false;
if (chat.channelType == ChatChannelType.Group) {
@@ -432,6 +435,8 @@ class MsgHandler {
// receivedCount++;
int sessionId = chat.targetId;
print('sessionId $sessionId');
if (isGroup) {
@@ -442,13 +447,22 @@ class MsgHandler {
if (groupInfo != null) {
showGroup = groupInfo.messageFree == 0;
}
if (showGroup && tempGroupId!=sessionId) {
if (showGroup ) {
int nowTime = DateTime.now().millisecondsSinceEpoch;
if (nowTime - mLastClickTime < timeInterval && tempGroupId==sessionId) { //2秒内同一群不重复弹出
return;
}
tempGroupId = sessionId;
LocalNotificationUtil.instance.show(
I18n.of(context).notice, I18n.of(context).new_chat_msg,
id: sessionId > 1000
? int.parse(sessionId.toString().substring(0, 3))
: sessionId);
mLastClickTime = nowTime;
}
});
} else {
@@ -460,8 +474,12 @@ class MsgHandler {
chat.contentBuff, chat.sendTime.toInt(), chat.targetId,
channelType: chat.channelType.value);
// String content =utf8.decode(msgModel.msgContent);
// if (chat.cType == ChatType.TextChatType){
// String content =utf8.decode(msgModel.msgContent);
// print('当前收到消息条数$receivedCount $content');
// }
if (chat.hasTencentTranslate()) {
msgModel.translateContent = chat.tencentTranslate;
@@ -897,6 +915,8 @@ class MsgHandler {
handlerAgreeMember(content);
} else if (msgId == 228) {
handlerUpdateMemberMsgFree(content);
}else if (msgId == 230) {
handlerGroupIsShowMenberNiceName(content);
}
break;
case ComId.PushMsg:
@@ -1174,6 +1194,45 @@ class MsgHandler {
NetWork().sendMsg(ComId.Chat, 225, seq);
}
//是否显示群昵称
static setGroupIsShowMenberNiceNameReq(int groupId, bool isShow) {
print('设置是否显示群昵称 groupId:$groupId isShow: $isShow');
var seq = SetGroupIsShowMenberNiceNameReq.create();
seq.groupId = groupId;
seq.isShowMenberNiceName=isShow;
NetWork().sendMsg(ComId.Chat, 229, seq);
}
//消息免打扰请求结果
static handlerGroupIsShowMenberNiceName(List<int> msgContent) {
print('设置是否显示群昵称');
var res = SetGroupIsShowMenberNiceNameRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
// GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
print('设置是否显示群昵称成功');
} else {
print('消息免打扰请求结果失败${res.errorCode}');
}
}
//消息免打扰请求结果
static handlerUpdateMemberMsgFree(List<int> msgContent) {
print('消息免打扰请求结果');
var res = SetGroupMasterMessageFreeRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
print('消息免打扰请求结果成功');
} else {
print('消息免打扰请求结果失败${res.errorCode}');
}
}
//群主批准其他人加入群结果
static handlerAgreeMember(List<int> msgContent) {
print('群主批准其他人加入群结果');
@@ -1200,17 +1259,7 @@ class MsgHandler {
NetWork().sendMsg(ComId.Chat, 227, seq);
}
//消息免打扰请求结果
static handlerUpdateMemberMsgFree(List<int> msgContent) {
print('消息免打扰请求结果');
var res = SetGroupMasterMessageFreeRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
print('消息免打扰请求结果成功');
} else {
print('消息免打扰请求结果失败${res.errorCode}');
}
}
//请求群列表求结果
static handlerGetGroupListRes(List<int> msgContent) async {


+ 1
- 0
lib/utils/receive_share_file.dart 查看文件

@@ -20,6 +20,7 @@ class ReceiveShareFile {
if (nowTime - mLastClickTime > timeInterval) {
if (value != null && value.length > 0) {
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path);
mLastClickTime = nowTime;
}
}
} else {


+ 12
- 4
lib/utils/screen_shot.dart 查看文件

@@ -3,8 +3,10 @@ import 'dart:io';
import 'package:chat/map/location_result.dart';
import 'package:chat/utils/screen.dart';
import 'package:flutter/services.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
//import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'MessageMgr.dart';
import 'file_cache_mgr.dart';
class ScreenShot {
static const MethodChannel _channel =
const MethodChannel('make.photo.screen.hibok');
@@ -15,10 +17,16 @@ class ScreenShot {
Map<String, dynamic> args = <String, dynamic>{};
Uint8List bytes = await _channel.invokeMethod('makePhotoScreen', args);
var compressImg = await FlutterImageCompress.compressWithList(bytes,
quality: 20, minWidth: (Screen.width).toInt());
File file =await FileCacheMgr().writeFile(DateTime.now().millisecondsSinceEpoch.toString(),bytes);
File compressedFile = await FlutterNativeImage.compressImage(file.path,
quality: 20, percentage: 80);
var compressImg =compressedFile.readAsBytesSync().toList();
print('地图大小${bytes.length}');
// var compressImg = await FlutterImageCompress.compressWithList(bytes,
// quality: 20, minWidth: (Screen.width).toInt());
print('地图大小${bytes.length} 压缩后${compressImg.length} ');
return compressImg;
}


+ 1
- 0
lib/utils/upload_util.dart 查看文件

@@ -140,6 +140,7 @@ class UploadUtil {
streamController.close();
streamMap.remove(msg.extraFile);
print('uploadFile response $response');
print('###msgContent ${msg.msgContent.length}');
if (response.data['code'] == 0) {
var data = response.data['data'];


+ 7
- 7
pubspec.lock 查看文件

@@ -405,13 +405,6 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.5+1"
flutter_image_compress:
dependency: "direct main"
description:
name: flutter_image_compress
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.3"
flutter_inapp_purchase:
dependency: "direct main"
description:
@@ -431,6 +424,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_native_image:
dependency: "direct main"
description:
name: flutter_native_image
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.0.5+2"
flutter_page_indicator:
dependency: transitive
description:


+ 2
- 2
pubspec.yaml 查看文件

@@ -38,8 +38,8 @@ dependencies:
oktoast: ^2.1.9
#压缩
flutter_image_compress: ^0.6.3
# flutter_image_compress: ^0.6.3
flutter_native_image: ^0.0.5 #https://github.com/btastic/flutter_native_image
#视频封面
video_thumbnail: ^0.1.6



Loading…
取消
儲存