@@ -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":[]}]} |
@@ -54,13 +54,12 @@ PODS: | |||||
- flutter_ijkplayer (0.0.1): | - flutter_ijkplayer (0.0.1): | ||||
- Flutter | - Flutter | ||||
- FlutterIJK (~> 0.1.0) | - FlutterIJK (~> 0.1.0) | ||||
- flutter_image_compress (0.0.1): | |||||
- Flutter | |||||
- Mantle | |||||
- flutter_inapp_purchase (0.0.1): | - flutter_inapp_purchase (0.0.1): | ||||
- Flutter | - Flutter | ||||
- flutter_local_notifications (0.0.1): | - flutter_local_notifications (0.0.1): | ||||
- Flutter | - Flutter | ||||
- flutter_native_image (0.0.1): | |||||
- Flutter | |||||
- flutter_plugin_android_lifecycle (0.0.1): | - flutter_plugin_android_lifecycle (0.0.1): | ||||
- Flutter | - Flutter | ||||
- flutter_qr_reader (0.0.1): | - flutter_qr_reader (0.0.1): | ||||
@@ -113,9 +112,6 @@ PODS: | |||||
- Flutter | - Flutter | ||||
- location_permissions (2.0.3): | - location_permissions (2.0.3): | ||||
- Flutter | - Flutter | ||||
- Mantle (2.1.0): | |||||
- Mantle/extobjc (= 2.1.0) | |||||
- Mantle/extobjc (2.1.0) | |||||
- open_file (0.0.1): | - open_file (0.0.1): | ||||
- Flutter | - Flutter | ||||
- package_info (0.0.1): | - package_info (0.0.1): | ||||
@@ -169,9 +165,9 @@ DEPENDENCIES: | |||||
- flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`) | - flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`) | ||||
- flutter_facebook_login (from `.symlinks/plugins/flutter_facebook_login/ios`) | - flutter_facebook_login (from `.symlinks/plugins/flutter_facebook_login/ios`) | ||||
- flutter_ijkplayer (from `.symlinks/plugins/flutter_ijkplayer/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_inapp_purchase (from `.symlinks/plugins/flutter_inapp_purchase/ios`) | ||||
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/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_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) | ||||
- flutter_qr_reader (from `.symlinks/plugins/flutter_qr_reader/ios`) | - flutter_qr_reader (from `.symlinks/plugins/flutter_qr_reader/ios`) | ||||
- flutter_webview_plugin (from `.symlinks/plugins/flutter_webview_plugin/ios`) | - flutter_webview_plugin (from `.symlinks/plugins/flutter_webview_plugin/ios`) | ||||
@@ -216,7 +212,6 @@ SPEC REPOS: | |||||
- JCore | - JCore | ||||
- JPush | - JPush | ||||
- libwebp | - libwebp | ||||
- Mantle | |||||
- Reachability | - Reachability | ||||
- TOCropViewController | - TOCropViewController | ||||
@@ -255,12 +250,12 @@ EXTERNAL SOURCES: | |||||
:path: ".symlinks/plugins/flutter_facebook_login/ios" | :path: ".symlinks/plugins/flutter_facebook_login/ios" | ||||
flutter_ijkplayer: | flutter_ijkplayer: | ||||
:path: ".symlinks/plugins/flutter_ijkplayer/ios" | :path: ".symlinks/plugins/flutter_ijkplayer/ios" | ||||
flutter_image_compress: | |||||
:path: ".symlinks/plugins/flutter_image_compress/ios" | |||||
flutter_inapp_purchase: | flutter_inapp_purchase: | ||||
:path: ".symlinks/plugins/flutter_inapp_purchase/ios" | :path: ".symlinks/plugins/flutter_inapp_purchase/ios" | ||||
flutter_local_notifications: | flutter_local_notifications: | ||||
:path: ".symlinks/plugins/flutter_local_notifications/ios" | :path: ".symlinks/plugins/flutter_local_notifications/ios" | ||||
flutter_native_image: | |||||
:path: ".symlinks/plugins/flutter_native_image/ios" | |||||
flutter_plugin_android_lifecycle: | flutter_plugin_android_lifecycle: | ||||
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" | :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" | ||||
flutter_qr_reader: | flutter_qr_reader: | ||||
@@ -344,9 +339,9 @@ SPEC CHECKSUMS: | |||||
flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3 | flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3 | ||||
flutter_facebook_login: cfb5659f686b1c575ef205c6b6fd20db9679d3c4 | flutter_facebook_login: cfb5659f686b1c575ef205c6b6fd20db9679d3c4 | ||||
flutter_ijkplayer: ef9006131553deb6d8ae6d7fbd3bcbf93b135930 | flutter_ijkplayer: ef9006131553deb6d8ae6d7fbd3bcbf93b135930 | ||||
flutter_image_compress: f69d0e0e078ce52b4810695593bc861ee319ae7d | |||||
flutter_inapp_purchase: 5c6a1ac3f11b11d0c8c0321c0c41c1f05805e4c8 | flutter_inapp_purchase: 5c6a1ac3f11b11d0c8c0321c0c41c1f05805e4c8 | ||||
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 | flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 | ||||
flutter_native_image: 9c0b7451838484458e5b0fae007b86a4c2d4bdfe | |||||
flutter_plugin_android_lifecycle: 47de533a02850f070f5696a623995e93eddcdb9b | flutter_plugin_android_lifecycle: 47de533a02850f070f5696a623995e93eddcdb9b | ||||
flutter_qr_reader: 254fd9eea45a65ef461e050d6607daf9cfb753e8 | flutter_qr_reader: 254fd9eea45a65ef461e050d6607daf9cfb753e8 | ||||
flutter_webview_plugin: ed9e8a6a96baf0c867e90e1bce2673913eeac694 | flutter_webview_plugin: ed9e8a6a96baf0c867e90e1bce2673913eeac694 | ||||
@@ -367,7 +362,6 @@ SPEC CHECKSUMS: | |||||
libwebp: 057912d6d0abfb6357d8bb05c0ea470301f5d61e | libwebp: 057912d6d0abfb6357d8bb05c0ea470301f5d61e | ||||
location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740 | location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740 | ||||
location_permissions: 195ff2a1182fa9029ef3f2653156961ee5a1e40b | location_permissions: 195ff2a1182fa9029ef3f2653156961ee5a1e40b | ||||
Mantle: 2fa750afa478cd625a94230fbf1c13462f29395b | |||||
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d | open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d | ||||
package_info: 48b108e75b8802c2d5e126f208ef540561c98aef | package_info: 48b108e75b8802c2d5e126f208ef540561c98aef | ||||
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d | path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d | ||||
@@ -16,12 +16,14 @@ import 'package:chat/utils/HttpUtil.dart'; | |||||
import 'package:chat/data/constants.dart'; | import 'package:chat/data/constants.dart'; | ||||
import 'package:chat/utils/app_navigator.dart'; | import 'package:chat/utils/app_navigator.dart'; | ||||
import 'package:chat/utils/blacklist_mgr.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/image_util.dart'; | ||||
import 'package:chat/utils/msgHandler.dart'; | import 'package:chat/utils/msgHandler.dart'; | ||||
import 'package:chat/utils/screen.dart'; | import 'package:chat/utils/screen.dart'; | ||||
import 'package:dio/dio.dart'; | import 'package:dio/dio.dart'; | ||||
import 'package:flutter/material.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:google_maps_flutter/google_maps_flutter.dart'; | ||||
import 'package:image_picker/image_picker.dart'; | import 'package:image_picker/image_picker.dart'; | ||||
import 'package:oktoast/oktoast.dart'; | import 'package:oktoast/oktoast.dart'; | ||||
@@ -387,8 +389,14 @@ class _UtilKeyboardState extends State<UtilKeyboard> { | |||||
if (thumbnail.length > ImgSizeLimit) { | if (thumbnail.length > ImgSizeLimit) { | ||||
print('图片较大 ${thumbnail.length}'); | 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}'); | print('压缩后 ${thumbnail.length}'); | ||||
} | } | ||||
@@ -876,7 +876,7 @@ class _ConversActionPageState extends State<ConversActionPage> | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
List<GroupInfoModel> groupList = GroupInfoMgr().groupInfoList; | |||||
// List<GroupInfoModel> groupList = GroupInfoMgr().groupInfoList; | |||||
return Scaffold( | return Scaffold( | ||||
backgroundColor: Colors.white, | backgroundColor: Colors.white, | ||||
@@ -2296,6 +2296,35 @@ class _ProfilePageState extends State<ProfilePage> | |||||
height: 137, | height: 137, | ||||
child: Column( | child: Column( | ||||
children: <Widget>[ | 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( | InkWell( | ||||
child: Container( | child: Container( | ||||
height: 45, | height: 45, | ||||
@@ -2345,35 +2374,8 @@ class _ProfilePageState extends State<ProfilePage> | |||||
fontSize: 18, | fontSize: 18, | ||||
color: Constants | color: Constants | ||||
.BlackTextColor)))), | .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)))), | |||||
], | ], | ||||
), | ), | ||||
), | ), | ||||
@@ -42,10 +42,10 @@ BoxDecoration getCardDecoration() { | |||||
class SystemEditPage extends StatefulWidget { | class SystemEditPage extends StatefulWidget { | ||||
SystemEditPage({Key key}) : super(key: key); | 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; | static const Separate_Size = 15.0; | ||||
String _selectType = UserData().language.toString(); | String _selectType = UserData().language.toString(); | ||||
bool soundPlayMode = false; | bool soundPlayMode = false; | ||||
@@ -510,12 +510,19 @@ class _SystemEditPageState extends State<SystemEditPage> { | |||||
void _buildConfirmLogout() { | void _buildConfirmLogout() { | ||||
CustomUI.buildOneConfirm( | CustomUI.buildOneConfirm( | ||||
context, I18n.of(context).exit, I18n.of(context).determine, () { | context, I18n.of(context).exit, I18n.of(context).determine, () { | ||||
LocalNotificationUtil().removeAlias(); | |||||
userLogout(); | |||||
HttpUtil().postLoginOut(context); | HttpUtil().postLoginOut(context); | ||||
ReceiveShareFile.dispose(); | |||||
}); | }); | ||||
} | } | ||||
static userLogout(){ | |||||
LocalNotificationUtil().removeAlias(); | |||||
ReceiveShareFile.dispose(); | |||||
} | |||||
//退出登陆 | //退出登陆 | ||||
Widget _buildLogout() { | Widget _buildLogout() { | ||||
return Container( | return Container( | ||||
@@ -264,6 +264,7 @@ class GroupSettingState extends State<GroupSetting> { | |||||
setState(() { | setState(() { | ||||
showGroupFriendNickname = val; | showGroupFriendNickname = val; | ||||
widget.groupInfoModel.updateShowNameSwitch(val); | widget.groupInfoModel.updateShowNameSwitch(val); | ||||
MsgHandler.setGroupIsShowMenberNiceNameReq(widget.groupInfoModel.sessionId, val); | |||||
}); | }); | ||||
}), | }), | ||||
@@ -565,6 +566,7 @@ class GroupSettingState extends State<GroupSetting> { | |||||
child: Text( | child: Text( | ||||
refName, | refName, | ||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
textAlign: TextAlign.center, | |||||
style: TextStyle(fontSize: 11, color: Color(0xff818181)), | style: TextStyle(fontSize: 11, color: Color(0xff818181)), | ||||
maxLines: 1, | maxLines: 1, | ||||
overflow: TextOverflow.ellipsis, | overflow: TextOverflow.ellipsis, | ||||
@@ -2,6 +2,7 @@ import 'dart:async'; | |||||
import 'package:chat/data/UserData.dart'; | import 'package:chat/data/UserData.dart'; | ||||
import 'package:chat/data/constants.dart'; | import 'package:chat/data/constants.dart'; | ||||
import 'package:chat/generated/i18n.dart'; | import 'package:chat/generated/i18n.dart'; | ||||
import 'package:chat/home/SystemEditPage.dart'; | |||||
import 'package:chat/home/find_page.dart'; | import 'package:chat/home/find_page.dart'; | ||||
import 'package:chat/home/realtimehelper/real_time_helper_page.dart'; | import 'package:chat/home/realtimehelper/real_time_helper_page.dart'; | ||||
import 'package:chat/home/unread_dot_widget.dart'; | import 'package:chat/home/unread_dot_widget.dart'; | ||||
@@ -300,6 +301,7 @@ class _HomeMainState extends State<HomeMain> { | |||||
loginOut(args) { | loginOut(args) { | ||||
HttpUtil().postLoginOut(context); | HttpUtil().postLoginOut(context); | ||||
SystemEditPageState.userLogout(); | |||||
showToast(I18n.of(context).otherLogin); | showToast(I18n.of(context).otherLogin); | ||||
} | } | ||||
@@ -368,14 +370,6 @@ class _HomeMainState extends State<HomeMain> { | |||||
// ]; | // ]; | ||||
_navigationViews = [ | _navigationViews = [ | ||||
// NavigationIconView( | |||||
// title: _titles[2], | |||||
// icon: IconData( | |||||
// 0xe67c, | |||||
// fontFamily: 'iconfont', | |||||
// ), | |||||
// isShowdot: true, | |||||
// iconSize: 29), | |||||
NavigationIconView( | NavigationIconView( | ||||
title: _titles[1], | title: _titles[1], | ||||
isShowdot: true, | isShowdot: true, | ||||
@@ -403,15 +397,6 @@ class _HomeMainState extends State<HomeMain> { | |||||
), | ), | ||||
isCenter: true, | isCenter: true, | ||||
iconSize: 31), | iconSize: 31), | ||||
// NavigationIconView( | |||||
// title: _titles[1], | |||||
// isShowdot: true, | |||||
// icon: IconData( | |||||
// 0xe60b, | |||||
// fontFamily: 'iconfont', | |||||
// ), | |||||
// type: 6, | |||||
// iconSize: 26.5), | |||||
NavigationIconView( | NavigationIconView( | ||||
title: _titles[3], | title: _titles[3], | ||||
@@ -421,6 +406,7 @@ class _HomeMainState extends State<HomeMain> { | |||||
fontFamily: 'iconfont', | fontFamily: 'iconfont', | ||||
), | ), | ||||
type: 4, | type: 4, | ||||
isShowdot: true, | |||||
iconSize: 26.5), | iconSize: 26.5), | ||||
NavigationIconView( | NavigationIconView( | ||||
@@ -138,6 +138,7 @@ Map<String, int> language = { | |||||
'zh_Hant_US': LanguageType.TraditionalChinese, | 'zh_Hant_US': LanguageType.TraditionalChinese, | ||||
'zh_Hans_CN': LanguageType.SimplifiedChinese, | 'zh_Hans_CN': LanguageType.SimplifiedChinese, | ||||
'zh_Hans_US': LanguageType.SimplifiedChinese, | 'zh_Hans_US': LanguageType.SimplifiedChinese, | ||||
'zh_Hans_MO': LanguageType.SimplifiedChinese, | |||||
'zh_CN': LanguageType.SimplifiedChinese, | 'zh_CN': LanguageType.SimplifiedChinese, | ||||
'ko_KR': LanguageType.Korean, | 'ko_KR': LanguageType.Korean, | ||||
'ko_KP': LanguageType.Korean, | 'ko_KP': LanguageType.Korean, | ||||
@@ -1194,6 +1194,7 @@ class GroupMember extends $pb.GeneratedMessage { | |||||
..e<GroupMemberIdentity>(3, 'identity', $pb.PbFieldType.OE, GroupMemberIdentity.identityNormal, GroupMemberIdentity.valueOf, GroupMemberIdentity.values) | ..e<GroupMemberIdentity>(3, 'identity', $pb.PbFieldType.OE, GroupMemberIdentity.identityNormal, GroupMemberIdentity.valueOf, GroupMemberIdentity.values) | ||||
..aOB(4, 'messageFree') | ..aOB(4, 'messageFree') | ||||
..aOB(5, 'effectiveUser') | ..aOB(5, 'effectiveUser') | ||||
..aOB(6, 'isShowMenberNiceName') | |||||
..hasRequiredFields = false | ..hasRequiredFields = false | ||||
; | ; | ||||
@@ -1235,6 +1236,11 @@ class GroupMember extends $pb.GeneratedMessage { | |||||
set effectiveUser($core.bool v) { $_setBool(4, v); } | set effectiveUser($core.bool v) { $_setBool(4, v); } | ||||
$core.bool hasEffectiveUser() => $_has(4); | $core.bool hasEffectiveUser() => $_has(4); | ||||
void clearEffectiveUser() => clearField(5); | 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 { | class GroupInfo extends $pb.GeneratedMessage { | ||||
@@ -2203,3 +2209,73 @@ class SetGroupMasterMessageFreeRes extends $pb.GeneratedMessage { | |||||
void clearMessageFree() => clearField(3); | 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); | |||||
} | |||||
@@ -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': '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': 'MessageFree', '3': 4, '4': 1, '5': 8, '10': 'MessageFree'}, | ||||
const {'1': 'EffectiveUser', '3': 5, '4': 1, '5': 8, '10': 'EffectiveUser'}, | 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'}, | |||||
], | |||||
}; | |||||
@@ -279,6 +279,7 @@ message GroupMember { | |||||
optional GroupMemberIdentity Identity = 3; //成员身份 | optional GroupMemberIdentity Identity = 3; //成员身份 | ||||
optional bool MessageFree = 4; //消息打扰标记 | optional bool MessageFree = 4; //消息打扰标记 | ||||
optional bool EffectiveUser = 5; //有效用户 移除群成员不直接删除数据而是修改有效标签 | optional bool EffectiveUser = 5; //有效用户 移除群成员不直接删除数据而是修改有效标签 | ||||
optional bool IsShowMenberNiceName =6; //是否显示成员昵称 | |||||
} | } | ||||
//群结构 | //群结构 | ||||
message GroupInfo { | message GroupInfo { | ||||
@@ -463,4 +464,18 @@ message SetGroupMasterMessageFreeRes{ | |||||
optional int32 ErrorCode = 1; //详见错误码文档 | optional int32 ErrorCode = 1; //详见错误码文档 | ||||
optional uint32 GroupId = 2; //群信息 | optional uint32 GroupId = 2; //群信息 | ||||
optional bool MessageFree = 3; //消息免打扰 | 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; //消息免打扰 | |||||
} | } |
@@ -9,7 +9,8 @@ import 'package:chat/utils/screen.dart'; | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:flutter/rendering.dart'; | import 'package:flutter/rendering.dart'; | ||||
import 'package:flutter/widgets.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 '../r.dart'; | ||||
import 'file_cache_mgr.dart'; | import 'file_cache_mgr.dart'; | ||||
@@ -67,16 +68,23 @@ class WidgetUtil { | |||||
} | } | ||||
static getCompressImg(String imgPath) async { | 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. | ///Get the coordinates of the widget on the screen.Widgets must be rendered completely. | ||||
@@ -252,6 +252,9 @@ class MsgHandler { | |||||
} | } | ||||
static int tempGroupId=0; | static int tempGroupId=0; | ||||
static int mLastClickTime = 0; | |||||
static int timeInterval = 2500; | |||||
// static int receivedCount=0; | |||||
static handlerReceiveMsg(PushChat chat) async { | static handlerReceiveMsg(PushChat chat) async { | ||||
bool isGroup = false; | bool isGroup = false; | ||||
if (chat.channelType == ChatChannelType.Group) { | if (chat.channelType == ChatChannelType.Group) { | ||||
@@ -432,6 +435,8 @@ class MsgHandler { | |||||
// receivedCount++; | // receivedCount++; | ||||
int sessionId = chat.targetId; | int sessionId = chat.targetId; | ||||
print('sessionId $sessionId'); | print('sessionId $sessionId'); | ||||
if (isGroup) { | if (isGroup) { | ||||
@@ -442,13 +447,22 @@ class MsgHandler { | |||||
if (groupInfo != null) { | if (groupInfo != null) { | ||||
showGroup = groupInfo.messageFree == 0; | 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; | tempGroupId = sessionId; | ||||
LocalNotificationUtil.instance.show( | LocalNotificationUtil.instance.show( | ||||
I18n.of(context).notice, I18n.of(context).new_chat_msg, | I18n.of(context).notice, I18n.of(context).new_chat_msg, | ||||
id: sessionId > 1000 | id: sessionId > 1000 | ||||
? int.parse(sessionId.toString().substring(0, 3)) | ? int.parse(sessionId.toString().substring(0, 3)) | ||||
: sessionId); | : sessionId); | ||||
mLastClickTime = nowTime; | |||||
} | } | ||||
}); | }); | ||||
} else { | } else { | ||||
@@ -460,8 +474,12 @@ class MsgHandler { | |||||
chat.contentBuff, chat.sendTime.toInt(), chat.targetId, | chat.contentBuff, chat.sendTime.toInt(), chat.targetId, | ||||
channelType: chat.channelType.value); | channelType: chat.channelType.value); | ||||
// String content =utf8.decode(msgModel.msgContent); | |||||
// if (chat.cType == ChatType.TextChatType){ | |||||
// String content =utf8.decode(msgModel.msgContent); | |||||
// print('当前收到消息条数$receivedCount $content'); | // print('当前收到消息条数$receivedCount $content'); | ||||
// } | |||||
if (chat.hasTencentTranslate()) { | if (chat.hasTencentTranslate()) { | ||||
msgModel.translateContent = chat.tencentTranslate; | msgModel.translateContent = chat.tencentTranslate; | ||||
@@ -897,6 +915,8 @@ class MsgHandler { | |||||
handlerAgreeMember(content); | handlerAgreeMember(content); | ||||
} else if (msgId == 228) { | } else if (msgId == 228) { | ||||
handlerUpdateMemberMsgFree(content); | handlerUpdateMemberMsgFree(content); | ||||
}else if (msgId == 230) { | |||||
handlerGroupIsShowMenberNiceName(content); | |||||
} | } | ||||
break; | break; | ||||
case ComId.PushMsg: | case ComId.PushMsg: | ||||
@@ -1174,6 +1194,45 @@ class MsgHandler { | |||||
NetWork().sendMsg(ComId.Chat, 225, seq); | 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) { | static handlerAgreeMember(List<int> msgContent) { | ||||
print('群主批准其他人加入群结果'); | print('群主批准其他人加入群结果'); | ||||
@@ -1200,17 +1259,7 @@ class MsgHandler { | |||||
NetWork().sendMsg(ComId.Chat, 227, seq); | 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 { | static handlerGetGroupListRes(List<int> msgContent) async { | ||||
@@ -20,6 +20,7 @@ class ReceiveShareFile { | |||||
if (nowTime - mLastClickTime > timeInterval) { | if (nowTime - mLastClickTime > timeInterval) { | ||||
if (value != null && value.length > 0) { | if (value != null && value.length > 0) { | ||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | ||||
mLastClickTime = nowTime; | |||||
} | } | ||||
} | } | ||||
} else { | } else { | ||||
@@ -3,8 +3,10 @@ import 'dart:io'; | |||||
import 'package:chat/map/location_result.dart'; | import 'package:chat/map/location_result.dart'; | ||||
import 'package:chat/utils/screen.dart'; | import 'package:chat/utils/screen.dart'; | ||||
import 'package:flutter/services.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 'MessageMgr.dart'; | ||||
import 'file_cache_mgr.dart'; | |||||
class ScreenShot { | class ScreenShot { | ||||
static const MethodChannel _channel = | static const MethodChannel _channel = | ||||
const MethodChannel('make.photo.screen.hibok'); | const MethodChannel('make.photo.screen.hibok'); | ||||
@@ -15,10 +17,16 @@ class ScreenShot { | |||||
Map<String, dynamic> args = <String, dynamic>{}; | Map<String, dynamic> args = <String, dynamic>{}; | ||||
Uint8List bytes = await _channel.invokeMethod('makePhotoScreen', 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; | return compressImg; | ||||
} | } | ||||
@@ -140,6 +140,7 @@ class UploadUtil { | |||||
streamController.close(); | streamController.close(); | ||||
streamMap.remove(msg.extraFile); | streamMap.remove(msg.extraFile); | ||||
print('uploadFile response $response'); | print('uploadFile response $response'); | ||||
print('###msgContent ${msg.msgContent.length}'); | |||||
if (response.data['code'] == 0) { | if (response.data['code'] == 0) { | ||||
var data = response.data['data']; | var data = response.data['data']; | ||||
@@ -405,13 +405,6 @@ packages: | |||||
url: "https://pub.flutter-io.cn" | url: "https://pub.flutter-io.cn" | ||||
source: hosted | source: hosted | ||||
version: "0.3.5+1" | 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: | flutter_inapp_purchase: | ||||
dependency: "direct main" | dependency: "direct main" | ||||
description: | description: | ||||
@@ -431,6 +424,13 @@ packages: | |||||
description: flutter | description: flutter | ||||
source: sdk | source: sdk | ||||
version: "0.0.0" | 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: | flutter_page_indicator: | ||||
dependency: transitive | dependency: transitive | ||||
description: | description: | ||||
@@ -38,8 +38,8 @@ dependencies: | |||||
oktoast: ^2.1.9 | 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 | video_thumbnail: ^0.1.6 | ||||