Переглянути джерело

更换图片压缩,修复缩略图过大消息发送崩溃被踢出

master
jiahao 5 роки тому
джерело
коміт
49fc4fe8a8
12 змінених файлів з 73 додано та 64 видалено
  1. +1
    -1
      .flutter-plugins-dependencies
  2. +2
    -3
      ios/Flutter/flutter_export_environment.sh
  3. +6
    -12
      ios/Podfile.lock
  4. +11
    -3
      lib/chat/util_keyboard.dart
  5. +1
    -1
      lib/home/ConversActionPage.dart
  6. +1
    -17
      lib/home/homeMain.dart
  7. +18
    -10
      lib/utils/image_util.dart
  8. +11
    -4
      lib/utils/msgHandler.dart
  9. +12
    -4
      lib/utils/screen_shot.dart
  10. +1
    -0
      lib/utils/upload_util.dart
  11. +7
    -7
      pubspec.lock
  12. +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":[]}]}

+ 2
- 3
ios/Flutter/flutter_export_environment.sh Переглянути файл

@@ -2,10 +2,9 @@
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=/Users/random/sdk/flutter_sdk"
export "FLUTTER_APPLICATION_PATH=/Users/random/code/flutter/project/qunliao"
export "FLUTTER_TARGET=/Users/random/code/flutter/project/qunliao/lib/main.dart"
export "FLUTTER_TARGET=lib/main.dart"
export "FLUTTER_BUILD_DIR=build"
export "SYMROOT=${SOURCE_ROOT}/../build/ios"
export "FLUTTER_FRAMEWORK_DIR=/Users/random/sdk/flutter_sdk/bin/cache/artifacts/engine/ios"
export "FLUTTER_FRAMEWORK_DIR=/Users/random/sdk/flutter_sdk/bin/cache/artifacts/engine/ios-release"
export "FLUTTER_BUILD_NAME=1.0.5"
export "FLUTTER_BUILD_NUMBER=6"
export "TRACK_WIDGET_CREATION=true"

+ 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,


+ 1
- 17
lib/home/homeMain.dart Переглянути файл

@@ -368,14 +368,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 +395,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],
@@ -420,6 +403,7 @@ class _HomeMainState extends State<HomeMain> {
fontFamily: 'iconfont',
),
type: 4,
isShowdot: true,
iconSize: 26.5),
NavigationIconView(


+ 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: 10);
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.


+ 11
- 4
lib/utils/msgHandler.dart Переглянути файл

@@ -251,7 +251,8 @@ class MsgHandler {
NetWork().sendMsg(ComId.Chat, 5, seq);
}
static int tempGroupId=0;
// static int tempGroupId=0;
// static int receivedCount=0;
static handlerReceiveMsg(PushChat chat) async {
bool isGroup = false;
if (chat.channelType == ChatChannelType.Group) {
@@ -432,6 +433,8 @@ class MsgHandler {
// receivedCount++;
int sessionId = chat.targetId;
print('sessionId $sessionId');
if (isGroup) {
@@ -442,8 +445,8 @@ class MsgHandler {
if (groupInfo != null) {
showGroup = groupInfo.messageFree == 0;
}
if (showGroup && tempGroupId!=sessionId) {
tempGroupId = sessionId;
if (showGroup ) {
// tempGroupId = sessionId;
LocalNotificationUtil.instance.show(
I18n.of(context).notice, I18n.of(context).new_chat_msg,
id: sessionId > 1000
@@ -460,8 +463,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;


+ 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
#视频封面
video_thumbnail: ^0.1.6



Завантаження…
Відмінити
Зберегти