diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index 3616769..10f2431 100644 --- a/.flutter-plugins-dependencies +++ b/.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":[]}]} \ No newline at end of file +{"_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":[]}]} \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 291308e..7e8bdbd 100644 --- a/ios/Podfile.lock +++ b/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 diff --git a/lib/chat/util_keyboard.dart b/lib/chat/util_keyboard.dart index a08eeac..94b843f 100644 --- a/lib/chat/util_keyboard.dart +++ b/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 { 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}'); } diff --git a/lib/home/ConversActionPage.dart b/lib/home/ConversActionPage.dart index 5ed44d7..3d646f3 100644 --- a/lib/home/ConversActionPage.dart +++ b/lib/home/ConversActionPage.dart @@ -876,7 +876,7 @@ class _ConversActionPageState extends State @override Widget build(BuildContext context) { - List groupList = GroupInfoMgr().groupInfoList; +// List groupList = GroupInfoMgr().groupInfoList; return Scaffold( backgroundColor: Colors.white, diff --git a/lib/home/ProfilePage.dart b/lib/home/ProfilePage.dart index 36918bd..ed5a54c 100644 --- a/lib/home/ProfilePage.dart +++ b/lib/home/ProfilePage.dart @@ -2296,6 +2296,35 @@ class _ProfilePageState extends State height: 137, child: Column( children: [ + 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 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)))), + + ], ), ), diff --git a/lib/home/SystemEditPage.dart b/lib/home/SystemEditPage.dart index 87470c2..8683ec6 100644 --- a/lib/home/SystemEditPage.dart +++ b/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 { +class SystemEditPageState extends State { static const Separate_Size = 15.0; String _selectType = UserData().language.toString(); bool soundPlayMode = false; @@ -510,12 +510,19 @@ class _SystemEditPageState extends State { 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( diff --git a/lib/home/group_setting.dart b/lib/home/group_setting.dart index 53fb9af..c2d36ea 100644 --- a/lib/home/group_setting.dart +++ b/lib/home/group_setting.dart @@ -264,6 +264,7 @@ class GroupSettingState extends State { setState(() { showGroupFriendNickname = val; widget.groupInfoModel.updateShowNameSwitch(val); + MsgHandler.setGroupIsShowMenberNiceNameReq(widget.groupInfoModel.sessionId, val); }); }), @@ -565,6 +566,7 @@ class GroupSettingState extends State { child: Text( refName, textScaleFactor: 1.0, + textAlign: TextAlign.center, style: TextStyle(fontSize: 11, color: Color(0xff818181)), maxLines: 1, overflow: TextOverflow.ellipsis, diff --git a/lib/home/homeMain.dart b/lib/home/homeMain.dart index 046d8af..8957401 100644 --- a/lib/home/homeMain.dart +++ b/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 { loginOut(args) { HttpUtil().postLoginOut(context); + SystemEditPageState.userLogout(); showToast(I18n.of(context).otherLogin); } @@ -368,14 +370,6 @@ class _HomeMainState extends State { // ]; _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 { ), 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 { fontFamily: 'iconfont', ), type: 4, + isShowdot: true, iconSize: 26.5), NavigationIconView( diff --git a/lib/main.dart b/lib/main.dart index a2d1973..c2c3d1b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -138,6 +138,7 @@ Map 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, diff --git a/lib/proto/chat.pb.dart b/lib/proto/chat.pb.dart index 96628ee..a55c830 100644 --- a/lib/proto/chat.pb.dart +++ b/lib/proto/chat.pb.dart @@ -1194,6 +1194,7 @@ class GroupMember extends $pb.GeneratedMessage { ..e(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 createRepeated() => $pb.PbList(); + 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 createRepeated() => $pb.PbList(); + 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); +} + diff --git a/lib/proto/chat.pbjson.dart b/lib/proto/chat.pbjson.dart index 245d7ba..b90539e 100644 --- a/lib/proto/chat.pbjson.dart +++ b/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'}, + ], +}; + diff --git a/lib/proto/chat.proto b/lib/proto/chat.proto index daade1a..128d42b 100644 --- a/lib/proto/chat.proto +++ b/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; //消息免打扰 } \ No newline at end of file diff --git a/lib/utils/image_util.dart b/lib/utils/image_util.dart index 0c1fc00..a448bfa 100644 --- a/lib/utils/image_util.dart +++ b/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. diff --git a/lib/utils/msgHandler.dart b/lib/utils/msgHandler.dart index ace074f..c44724b 100644 --- a/lib/utils/msgHandler.dart +++ b/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 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 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 msgContent) { print('群主批准其他人加入群结果'); @@ -1200,17 +1259,7 @@ class MsgHandler { NetWork().sendMsg(ComId.Chat, 227, seq); } - //消息免打扰请求结果 - static handlerUpdateMemberMsgFree(List 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 msgContent) async { diff --git a/lib/utils/receive_share_file.dart b/lib/utils/receive_share_file.dart index 91248be..bb768fb 100644 --- a/lib/utils/receive_share_file.dart +++ b/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 { diff --git a/lib/utils/screen_shot.dart b/lib/utils/screen_shot.dart index 2ecf27d..ee13c20 100644 --- a/lib/utils/screen_shot.dart +++ b/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 args = {}; 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; } diff --git a/lib/utils/upload_util.dart b/lib/utils/upload_util.dart index 701a160..fb0ffde 100644 --- a/lib/utils/upload_util.dart +++ b/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']; diff --git a/pubspec.lock b/pubspec.lock index db16726..665fcff 100644 --- a/pubspec.lock +++ b/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: diff --git a/pubspec.yaml b/pubspec.yaml index 5005238..07e33ba 100644 --- a/pubspec.yaml +++ b/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