瀏覽代碼

Merge branch 'temp'

master
zcm 5 年之前
父節點
當前提交
bb6717a217
共有 44 個檔案被更改,包括 756 行新增451 行删除
  1. +1
    -0
      .gitignore
  2. +5
    -5
      ios/Flutter/flutter_export_environment.sh
  3. +20
    -20
      ios/Runner.xcodeproj/project.pbxproj
  4. +1
    -1
      ios/Runner/Runner.entitlements
  5. +1
    -1
      ios/Runner/RunnerProfile.entitlements
  6. +1
    -1
      ios/Share Extension/Share Extension.entitlements
  7. +1
    -1
      ios/Share Extension/Share ExtensionProfile.entitlements
  8. +1
    -1
      ios/Share Extension/ShareViewController.swift
  9. +14
    -8
      lib/chat/ChatPage.dart
  10. +6
    -0
      lib/chat/ChatPageItem.dart
  11. +13
    -0
      lib/chat/group_chat_view.dart
  12. +28
    -28
      lib/chat/util_keyboard.dart
  13. +0
    -1
      lib/data/UserData.dart
  14. +8
    -43
      lib/generated/i18n.dart
  15. +5
    -4
      lib/home/AddProgram.dart
  16. +2
    -0
      lib/home/DiscoverPage.dart
  17. +1
    -2
      lib/home/EditData.dart
  18. +1
    -2
      lib/home/InfoList.dart
  19. +2
    -1
      lib/home/Myprogram.dart
  20. +8
    -8
      lib/home/ProfilePage.dart
  21. +2
    -3
      lib/home/ProgramDetail.dart
  22. +1
    -1
      lib/home/SearchPage.dart
  23. +2
    -2
      lib/home/create_group_view.dart
  24. +2
    -2
      lib/home/daily_bonus_page.dart
  25. +135
    -0
      lib/home/forward_view.dart
  26. +4
    -0
      lib/home/friend_page.dart
  27. +2
    -2
      lib/home/homeMain.dart
  28. +0
    -19
      lib/home/last_chat_item.dart
  29. +1
    -1
      lib/home/last_chat_record_widget.dart
  30. +1
    -1
      lib/home/my_qr.dart
  31. +1
    -8
      lib/main.dart
  32. +1
    -1
      lib/utils/ChargeMoney.dart
  33. +16
    -20
      lib/utils/CustomUI.dart
  34. +5
    -11
      lib/utils/HttpUtil.dart
  35. +2
    -2
      lib/utils/MessageBox.dart
  36. +3
    -3
      lib/utils/NetUtil.dart
  37. +254
    -212
      lib/utils/TempUserCard.dart
  38. +4
    -3
      lib/utils/UserCard.dart
  39. +30
    -11
      lib/utils/app_navigator.dart
  40. +134
    -0
      lib/utils/file_preview_local.dart
  41. +8
    -1
      lib/utils/msgHandler.dart
  42. +21
    -8
      lib/utils/receive_share_file.dart
  43. +6
    -6
      lib/utils/screen.dart
  44. +2
    -7
      lib/utils/screen_shot.dart

+ 1
- 0
.gitignore 查看文件

@@ -61,6 +61,7 @@
**/ios/Flutter/app.flx **/ios/Flutter/app.flx
**/ios/Flutter/app.zip **/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/ **/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json **/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.* **/ios/Runner/GeneratedPluginRegistrant.*


+ 5
- 5
ios/Flutter/flutter_export_environment.sh 查看文件

@@ -1,10 +1,10 @@
#!/bin/sh #!/bin/sh
# This is a generated file; do not edit or check into version control. # This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=G:\flutter"
export "FLUTTER_APPLICATION_PATH=G:\Hibok"
export "FLUTTER_TARGET=lib\main.dart"
export "FLUTTER_ROOT=/Users/random/sdk/flutter_sdk"
export "FLUTTER_APPLICATION_PATH=/Users/random/code/flutter/project/qunliao"
export "FLUTTER_TARGET=lib/main.dart"
export "FLUTTER_BUILD_DIR=build" export "FLUTTER_BUILD_DIR=build"
export "SYMROOT=${SOURCE_ROOT}/../build\ios"
export "FLUTTER_FRAMEWORK_DIR=G:\flutter\bin\cache\artifacts\engine\ios"
export "SYMROOT=${SOURCE_ROOT}/../build/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_NAME=1.0.5"
export "FLUTTER_BUILD_NUMBER=6" export "FLUTTER_BUILD_NUMBER=6"

+ 20
- 20
ios/Runner.xcodeproj/project.pbxproj 查看文件

@@ -270,12 +270,12 @@
TargetAttributes = { TargetAttributes = {
5C95C08D2406514F00CEBCE3 = { 5C95C08D2406514F00CEBCE3 = {
CreatedOnToolsVersion = 11.3; CreatedOnToolsVersion = 11.3;
DevelopmentTeam = 76U6VCZ8JY;
DevelopmentTeam = QJ9M3998Q6;
ProvisioningStyle = Automatic; ProvisioningStyle = Automatic;
}; };
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1; CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = 76U6VCZ8JY;
DevelopmentTeam = QJ9M3998Q6;
ProvisioningStyle = Automatic; ProvisioningStyle = Automatic;
}; };
}; };
@@ -542,8 +542,8 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -557,7 +557,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
MARKETING_VERSION = 1.0.7; MARKETING_VERSION = 1.0.7;
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;
@@ -578,8 +578,8 @@
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = YES; ENABLE_BITCODE = YES;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Share Extension/Info.plist"; INFOPLIST_FILE = "Share Extension/Info.plist";
@@ -589,7 +589,7 @@
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_LDFLAGS = ""; OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
@@ -610,8 +610,8 @@
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = YES; ENABLE_BITCODE = YES;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Share Extension/Info.plist"; INFOPLIST_FILE = "Share Extension/Info.plist";
@@ -620,7 +620,7 @@
MARKETING_VERSION = 1.0.7; MARKETING_VERSION = 1.0.7;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_LDFLAGS = ""; OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -640,8 +640,8 @@
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share ExtensionProfile.entitlements"; CODE_SIGN_ENTITLEMENTS = "Share Extension/Share ExtensionProfile.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = YES; ENABLE_BITCODE = YES;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Share Extension/Info.plist"; INFOPLIST_FILE = "Share Extension/Info.plist";
@@ -650,7 +650,7 @@
MARKETING_VERSION = 1.0.7; MARKETING_VERSION = 1.0.7;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_LDFLAGS = ""; OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
@@ -777,8 +777,8 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -792,7 +792,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
MARKETING_VERSION = 1.0.7; MARKETING_VERSION = 1.0.7;
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;
@@ -811,8 +811,8 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
DEVELOPMENT_TEAM = 76U6VCZ8JY;
CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = QJ9M3998Q6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -826,7 +826,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
MARKETING_VERSION = 1.0.7; MARKETING_VERSION = 1.0.7;
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho;
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;


+ 1
- 1
ios/Runner/Runner.entitlements 查看文件

@@ -10,7 +10,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.cyhd.henho</string>
<string>group.com.chengyouhudong.hibok</string>
</array> </array>
</dict> </dict>
</plist> </plist>

+ 1
- 1
ios/Runner/RunnerProfile.entitlements 查看文件

@@ -10,7 +10,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.cyhd.henho</string>
<string>group.com.chengyouhudong.hibok</string>
</array> </array>
</dict> </dict>
</plist> </plist>

+ 1
- 1
ios/Share Extension/Share Extension.entitlements 查看文件

@@ -4,7 +4,7 @@
<dict> <dict>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.cyhd.henho</string>
<string>group.com.chengyouhudong.hibok</string>
</array> </array>
</dict> </dict>
</plist> </plist>

+ 1
- 1
ios/Share Extension/Share ExtensionProfile.entitlements 查看文件

@@ -4,7 +4,7 @@
<dict> <dict>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.cyhd.henho</string>
<string>group.com.chengyouhudong.hibok</string>
</array> </array>
</dict> </dict>
</plist> </plist>

+ 1
- 1
ios/Share Extension/ShareViewController.swift 查看文件

@@ -5,7 +5,7 @@ import Photos


class ShareViewController: SLComposeServiceViewController { class ShareViewController: SLComposeServiceViewController {
// TODO: IMPORTANT: This should be your host app bundle identifier // TODO: IMPORTANT: This should be your host app bundle identifier
let hostAppBundleIdentifier = "com.cyhd.henho"
let hostAppBundleIdentifier = "com.chengyouhudong.hibok"
let sharedKey = "ShareKey" let sharedKey = "ShareKey"
var sharedMedia: [SharedMediaFile] = [] var sharedMedia: [SharedMediaFile] = []
var sharedText: [String] = [] var sharedText: [String] = []


+ 14
- 8
lib/chat/ChatPage.dart 查看文件

@@ -36,8 +36,6 @@ import 'ChatPageItem.dart';
import 'input_bar.dart'; import 'input_bar.dart';
import 'package:chat/utils/PopUpMenu.dart' as myPop; import 'package:chat/utils/PopUpMenu.dart' as myPop;
import 'package:chat/models/money_change.dart'; import 'package:chat/models/money_change.dart';
class ChatPage extends StatefulWidget { class ChatPage extends StatefulWidget {
final int friendId; final int friendId;
final int enterType; // 0默认 1图片 final int enterType; // 0默认 1图片
@@ -197,14 +195,22 @@ class _ChatPageState extends State<ChatPage> {
if (widget.enterType == 1) { if (widget.enterType == 1) {
print('接收到的:${widget.enterContent}'); print('接收到的:${widget.enterContent}');
File file = new File(widget.enterContent);
if(file.existsSync()){
print('接收到的文件--存在');
}else{
print('接收到的文件--不存在');
_sendFile(File(widget.enterContent));
} else if (widget.enterType == 2) {
//转发消息
MsgModel originMsg = widget.enterContent;
MsgModel msg = MsgHandler.createSendMsg(
ChatType.valueOf(originMsg.msgType), originMsg.msgContent);
msg.extraInfo = originMsg.extraInfo;
msg.extraFile = originMsg.extraFile;
msg.localFile = originMsg.localFile;
msg.friendId = widget.friendId;
if (msg.localFile != null) {
msg.state = MsgState.Uploaded;
} }
_sendFile(File(widget.enterContent));
sendMsg(msg);
} }
}); });
} }


+ 6
- 0
lib/chat/ChatPageItem.dart 查看文件

@@ -614,6 +614,7 @@ class _ChatPageItemState extends State<ChatPageItem>
List<String> actions = [ List<String> actions = [
I18n.of(context).delete, I18n.of(context).delete,
I18n.of(context).reply, I18n.of(context).reply,
'转发'
]; ];
actionsFunc.add(() { actionsFunc.add(() {
@@ -623,6 +624,11 @@ class _ChatPageItemState extends State<ChatPageItem>
print('发送引用的消息'); print('发送引用的消息');
MessageMgr().emit('Reply Select Message', widget.msg); MessageMgr().emit('Reply Select Message', widget.msg);
}); });
actionsFunc.add(() {
print('转发消息');
AppNavigator.pushForwardPage(context, widget.msg);
});
if (widget.msg.msgType == ChatType.TextChatType.value) { if (widget.msg.msgType == ChatType.TextChatType.value) {
actions.insert(0, I18n.of(context).copy); actions.insert(0, I18n.of(context).copy);


+ 13
- 0
lib/chat/group_chat_view.dart 查看文件

@@ -106,6 +106,19 @@ class _GroupChatPageState extends State<GroupChatPage> {
if (widget.enterType == 1) { if (widget.enterType == 1) {
print('接收到的:${widget.enterContent}'); print('接收到的:${widget.enterContent}');
_sendFile(File(widget.enterContent)); _sendFile(File(widget.enterContent));
} else if (widget.enterType == 2) {
//转发消息
MsgModel originMsg = widget.enterContent;
MsgModel msg = MsgHandler.createSendMsg(
ChatType.valueOf(originMsg.msgType), originMsg.msgContent,channelType: ChatChannelType.Group);
msg.extraInfo = originMsg.extraInfo;
msg.extraFile = originMsg.extraFile;
msg.localFile = originMsg.localFile;
if (msg.localFile != null) {
msg.state = MsgState.Uploaded;
}
sendMsg(msg);
} }
}); });
} }


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

@@ -163,8 +163,7 @@ class UtilKeyboard extends StatelessWidget {
showToast(I18n.of(context).cantt_voice); showToast(I18n.of(context).cantt_voice);
return; return;
} }
if (BlacklistMgr.isBlaklistMe(info.userId)) {
if (BlacklistMgr.isBlaklistMe(info.userId)) {
showToast(I18n.of(context).you_are_blaklisted); showToast(I18n.of(context).you_are_blaklisted);
return; return;
} }
@@ -304,38 +303,39 @@ class UtilKeyboard extends StatelessWidget {
int fileSize = file.lengthSync(); int fileSize = file.lengthSync();
print('选择的文件 ${file.path} 大小 $fileSize'); print('选择的文件 ${file.path} 大小 $fileSize');
if (fileSize > 33 * 1024 * 1024) {
showToast('文件大于33M');
return;
}
if (fileSize > 33 * 1024 * 1024) {
showToast('文件大于33M');
return;
}
int friendId = 0;
if (!isGroup) {
friendId = Provider.of<int>(context);
}
int friendId = 0;
if (!isGroup) {
friendId = Provider.of<int>(context);
}
var fileName = file.path.split('/').last;
print('fileName $fileName');
var fileName = file.path.split('/').last;
print('fileName $fileName');
var ext = '';
var extList = fileName.split('.');
if (extList.length > 1) {
ext = extList.last;
}
print('ext $ext');
var ext = '';
var extList = fileName.split('.');
if (extList.length > 1) {
ext = extList.last;
}
print('ext $ext');
var fileMsg = FileChat.create();
fileMsg.type = ext;
fileMsg.size = fileSize;
fileMsg.name = fileName;
var fileMsg = FileChat.create();
fileMsg.type = ext;
fileMsg.size = fileSize;
fileMsg.name = fileName;
var msg = MsgHandler.createSendMsg(
ChatType.FileChatType, fileMsg.writeToBuffer(),
friendId: friendId,
localFile: file.path,
channelType: isGroup ? ChatChannelType.Group : ChatChannelType.Session);
var msg = MsgHandler.createSendMsg(ChatType.FileChatType, fileMsg.writeToBuffer(),
friendId: friendId,
localFile: file.path,
channelType:
isGroup ? ChatChannelType.Group : ChatChannelType.Session);
sendMsg(msg);
sendMsg(msg);
} }
void _sendVideo(BuildContext context) async { void _sendVideo(BuildContext context) async {


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

@@ -219,7 +219,6 @@ class UserData {
await prefs.setDouble(Constants.Longitude, UserData().longitude); await prefs.setDouble(Constants.Longitude, UserData().longitude);
HttpUtil().getAddress(loc.longitude, loc.latitude); HttpUtil().getAddress(loc.longitude, loc.latitude);
//HttpUtil().getAddress(106.600798525456, 10.7517368433358); //HttpUtil().getAddress(106.600798525456, 10.7517368433358);
//HttpUtil().getAddress(113.8669580078125, 22.568465711805555);
if (callback != null) callback(loc); if (callback != null) callback(loc);
} }
} }


+ 8
- 43
lib/generated/i18n.dart 查看文件

@@ -5846,7 +5846,8 @@ class _I18n_vi_VN extends I18n {
/// "你不能添加自己" /// "你不能添加自己"
@override @override
String get not_add_Myself => "你不能添加自己"; String get not_add_Myself => "你不能添加自己";
/// "对方已拉黑了你"

/// "对方已拉黑了你"
@override @override
String get you_are_blaklisted => "对方已拉黑了你"; String get you_are_blaklisted => "对方已拉黑了你";
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"
@@ -8839,9 +8840,9 @@ class _I18n_zh_HK extends I18n {
/// "今日簽到可領取/s1積分" /// "今日簽到可領取/s1積分"
@override @override
String get today_score => "今日簽到可領取/s1積分"; String get today_score => "今日簽到可領取/s1積分";
/// "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換"
/// "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換"
@override @override
String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換";
String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換";
/// "簽到" /// "簽到"
@override @override
String get sign_in => "簽到"; String get sign_in => "簽到";
@@ -9340,15 +9341,6 @@ class _I18n_zh_HK extends I18n {
/// "你不能添加自己" /// "你不能添加自己"
@override @override
String get not_add_Myself => "你不能添加自己"; String get not_add_Myself => "你不能添加自己";
/// "對方已拉黑了你"
@override
String get you_are_blaklisted => "對方已拉黑了你";
/// "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)"
@override
String get confrim_recovery => "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)";
/// "發送到"
@override
String get send_to => "發送到";


@override @override
TextDirection get textDirection => TextDirection.ltr; TextDirection get textDirection => TextDirection.ltr;
@@ -12333,9 +12325,9 @@ class _I18n_zh_CN extends _I18n_zh_HK {
/// "今日签到可领取/s1积分" /// "今日签到可领取/s1积分"
@override @override
String get today_score => "今日签到可领取/s1积分"; String get today_score => "今日签到可领取/s1积分";
/// "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换"
/// "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换"
@override @override
String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换";
String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换";
/// "签到" /// "签到"
@override @override
String get sign_in => "签到"; String get sign_in => "签到";
@@ -12834,15 +12826,6 @@ class _I18n_zh_CN extends _I18n_zh_HK {
/// "你不能添加自己" /// "你不能添加自己"
@override @override
String get not_add_Myself => "你不能添加自己"; String get not_add_Myself => "你不能添加自己";
/// "对方已拉黑了你"
@override
String get you_are_blaklisted => "对方已拉黑了你";
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"
@override
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)";
/// "发送到"
@override
String get send_to => "发送到";


@override @override
TextDirection get textDirection => TextDirection.ltr; TextDirection get textDirection => TextDirection.ltr;
@@ -16325,15 +16308,6 @@ class _I18n_ko_KR extends I18n {
/// "用户不存在" /// "用户不存在"
@override @override
String get not_have_user => "用户不存在"; String get not_have_user => "用户不存在";
/// "对方已拉黑了你"
@override
String get you_are_blaklisted => "对方已拉黑了你";
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"
@override
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)";
/// "發送到"
@override
String get send_to => "發送到";


@override @override
TextDirection get textDirection => TextDirection.ltr; TextDirection get textDirection => TextDirection.ltr;
@@ -19318,9 +19292,9 @@ class _I18n_ja_JP extends I18n {
/// "本日サインして/s1ポイントが受け入れる" /// "本日サインして/s1ポイントが受け入れる"
@override @override
String get today_score => "本日サインして/s1ポイントが受け入れる"; String get today_score => "本日サインして/s1ポイントが受け入れる";
/// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください."
/// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください "
@override @override
String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください.";
String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください ";
/// "サイン" /// "サイン"
@override @override
String get sign_in => "サイン"; String get sign_in => "サイン";
@@ -19819,15 +19793,6 @@ class _I18n_ja_JP extends I18n {
/// "你不能添加自己" /// "你不能添加自己"
@override @override
String get not_add_Myself => "你不能添加自己"; String get not_add_Myself => "你不能添加自己";
/// "对方已拉黑了你"
@override
String get you_are_blaklisted => "对方已拉黑了你";
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"
@override
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)";
/// "發送到"
@override
String get send_to => "發送到";


@override @override
TextDirection get textDirection => TextDirection.ltr; TextDirection get textDirection => TextDirection.ltr;


+ 5
- 4
lib/home/AddProgram.dart 查看文件

@@ -868,7 +868,8 @@ class _AddProgramState extends State<AddProgram> {
contentPadding: contentPadding:
EdgeInsets.only(top: 6, bottom: 10, right: 10), EdgeInsets.only(top: 6, bottom: 10, right: 10),
hintText: I18n.of(context).please_civilization, hintText: I18n.of(context).please_civilization,
hintStyle: TextStyle(fontSize: 12, height: 1.15),
hintStyle:
TextStyle(fontSize: 12, height: 1.15),
border: InputBorder.none, border: InputBorder.none,
), ),
style: TextStyle( style: TextStyle(
@@ -1157,7 +1158,7 @@ class _AddProgramState extends State<AddProgram> {
.replaceFirst('/s1', UserData().addProgramPrice.toString()); .replaceFirst('/s1', UserData().addProgramPrice.toString());
} }
return Container( return Container(
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20),
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20),
child: Text( child: Text(
str, str,
textScaleFactor: 1.0, textScaleFactor: 1.0,
@@ -1311,8 +1312,8 @@ class _AddProgramState extends State<AddProgram> {
var hopeObject = ''; var hopeObject = '';
lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f'); lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f');
String temp = '';
String postTemp = '';
String temp='';
String postTemp='';
imgUrlList.forEach((str) { imgUrlList.forEach((str) {
temp += (temp == "" ? str : '|$str'); temp += (temp == "" ? str : '|$str');
postTemp += (postTemp == "" postTemp += (postTemp == ""


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

@@ -691,6 +691,8 @@ class _DisCoverPageState extends State<DisCoverPage>
Widget _renderRow(int index, list, page) { Widget _renderRow(int index, list, page) {
if (index < list.length) { if (index < list.length) {
var userInfo = list[index]; var userInfo = list[index];
print('----------------------------------------------------');
print(userInfo);
return UserCard( return UserCard(
key: UniqueKey(), key: UniqueKey(),
userName: Provider.of<RefNameProvider>(context) userName: Provider.of<RefNameProvider>(context)


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

@@ -742,8 +742,7 @@ class _EditPageState extends State<EditPage> {
widget.isEditPage ? idItem : Container(), widget.isEditPage ? idItem : Container(),
_buildDivider(), _buildDivider(),
_bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out, _bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out,
true, nickNameController, true, (str) => nickname = str,
inputFormatters: [LengthLimitingTextInputFormatter(20)]),
true, nickNameController, true, (str) => nickname = str),
_buildDivider(), _buildDivider(),
_bottomBorderBox(I18n.of(context).country, country, false, null, _bottomBorderBox(I18n.of(context).country, country, false, null,
countryId.length != 0, selectCountry), countryId.length != 0, selectCountry),


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

@@ -24,6 +24,7 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'ProgramDetail.dart'; import 'ProgramDetail.dart';
class _ConversationItem extends StatelessWidget { class _ConversationItem extends StatelessWidget {
const _ConversationItem( const _ConversationItem(
{Key key, {Key key,
@@ -349,8 +350,6 @@ class _ConversationItem extends StatelessWidget {
} }
} }
class InfoListPage extends StatefulWidget { class InfoListPage extends StatefulWidget {
@required @required
final String title; final String title;


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

@@ -171,7 +171,8 @@ class _MyProgramPageState extends State<MyProgramPage> {
), ),
centerTitle: true, centerTitle: true,
leading: CustomUI.buildCustomLeading(context), leading: CustomUI.buildCustomLeading(context),
elevation: 1,
elevation: 1,
actions: <Widget>[ actions: <Widget>[
isMyself isMyself
? myPop.PopupMenuButton<String>( ? myPop.PopupMenuButton<String>(


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

@@ -389,6 +389,9 @@ class _ProfilePageState extends State<ProfilePage>
data['sign'] = TokenMgr().getSign(data); data['sign'] = TokenMgr().getSign(data);
Response res = await HttpUtil().post('user/personal/album', data: data); Response res = await HttpUtil().post('user/personal/album', data: data);
if (res == null) {
return;
}
Map resData = res.data; Map resData = res.data;
if (resData['code'] == 0) { if (resData['code'] == 0) {
imgList = resData['data'] == null ? [] : resData['data']; imgList = resData['data'] == null ? [] : resData['data'];
@@ -1087,8 +1090,9 @@ class _ProfilePageState extends State<ProfilePage>
top: 20, top: 20,
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
if (!userInfo.isLike) { if (!userInfo.isLike) {
HttpUtil().setLove(userInfo.userId, () {
HttpUtil().setLove(userInfo.userId, () {
MessageMgr().emit('refresh_love_list', MessageMgr().emit('refresh_love_list',
{'UserId': userInfo.userId, 'flag': 0}); {'UserId': userInfo.userId, 'flag': 0});
setState(() { setState(() {
@@ -1366,7 +1370,6 @@ class _ProfilePageState extends State<ProfilePage>
context, I18n.of(context).blacklist_choose, I18n.of(context).determine, context, I18n.of(context).blacklist_choose, I18n.of(context).determine,
() async { () async {
Navigator.pop(context); Navigator.pop(context);
HttpUtil().blackUser(userInfo.userId, () { HttpUtil().blackUser(userInfo.userId, () {
isblack = true; isblack = true;
}); });
@@ -2087,8 +2090,7 @@ class _ProfilePageState extends State<ProfilePage>
description: I18n.of(context).recovery_photo, description: I18n.of(context).recovery_photo,
showDivider: false, showDivider: false,
showRightIcon: false, showRightIcon: false,
onPressed: () async {
CustomUI.buildOneConfirm(
onPressed: () async {CustomUI.buildOneConfirm(
context, context,
I18n.of(context).confrim_recovery, I18n.of(context).confrim_recovery,
I18n.of(context).determine, () async { I18n.of(context).determine, () async {
@@ -2318,7 +2320,7 @@ class _ProfilePageState extends State<ProfilePage>
), ),
onTap: isblack onTap: isblack
? () async { ? () async {
HttpUtil().cancleBlackUser(
HttpUtil().cancleBlackUser(
userInfo.userId, () { userInfo.userId, () {
Navigator.of(context).pop(); Navigator.of(context).pop();
isblack = false; isblack = false;
@@ -2527,8 +2529,7 @@ class _ProfilePageState extends State<ProfilePage>
showToast(I18n.of(context).cantt_voice); showToast(I18n.of(context).cantt_voice);
return; return;
} }
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) {
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) {
showToast(I18n.of(context).you_are_blaklisted); showToast(I18n.of(context).you_are_blaklisted);
return; return;
} }
@@ -2537,7 +2538,6 @@ class _ProfilePageState extends State<ProfilePage>
showToast(I18n.of(context).reject_message); showToast(I18n.of(context).reject_message);
return; return;
} }
//对方关闭陌生人消息,则提示 //对方关闭陌生人消息,则提示
if (!userInfo.isCanStrangerNews) { if (!userInfo.isCanStrangerNews) {
showToast(I18n.of(context).stranger_close_tips); showToast(I18n.of(context).stranger_close_tips);


+ 2
- 3
lib/home/ProgramDetail.dart 查看文件

@@ -119,7 +119,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> {
textScaleFactor: 1.0, textScaleFactor: 1.0,
style: TextStyle(color: AppColors.NewAppbarTextColor), style: TextStyle(color: AppColors.NewAppbarTextColor),
), ),
elevation: 1,
elevation: 1,
leading: CustomUI.buildCustomLeading(context), leading: CustomUI.buildCustomLeading(context),
centerTitle: true, centerTitle: true,
); );
@@ -553,8 +553,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> {
list.add(button); list.add(button);
} }
return Container( return Container(
padding: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10),
color: Colors.white,
margin: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: list, children: list,


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

@@ -175,7 +175,7 @@ class _SearchPageState extends State<SearchPage> {
child: Stack( child: Stack(
children: <Widget>[ children: <Widget>[
SmartRefresher( SmartRefresher(
enablePullDown: list.length > 0,
enablePullDown: list.length > 0,
enablePullUp: true, enablePullUp: true,
header: MaterialClassicHeader(), header: MaterialClassicHeader(),
footer: CustomUI.buildLoadingFooter(), footer: CustomUI.buildLoadingFooter(),


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

@@ -510,7 +510,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> {
actions: <Widget>[ actions: <Widget>[
InkWell( InkWell(
child: Padding( child: Padding(
padding: EdgeInsets.only(right: 12, top: 14, bottom: 14),
padding: EdgeInsets.only(right: 15, top: 14, bottom: 14),
child: Consumer<GroupSelectProvider>( child: Consumer<GroupSelectProvider>(
builder: (context, counter, child) => Container( builder: (context, counter, child) => Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@@ -525,7 +525,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> {
? Colors.red ? Colors.red
: const Color(0xFF3875E9)), : const Color(0xFF3875E9)),
), ),
padding: EdgeInsets.symmetric(horizontal: 10),
padding: EdgeInsets.symmetric(horizontal: 18),
alignment: Alignment.center, alignment: Alignment.center,
child: fixedText( child: fixedText(
(widget.pageType == (widget.pageType ==


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

@@ -526,8 +526,8 @@ class DailyBouusState extends State with SingleTickerProviderStateMixin {
height: 37, height: 37,
child: Image.asset( child: Image.asset(
R.assetsImagesImgFyj, R.assetsImagesImgFyj,
width: needAnimate ? animation.value * 17 : 17,
height: needAnimate ? animation.value * 17 : 17,
width: needAnimate ? animation.value * 24 : 24,
height: needAnimate ? animation.value * 24 : 24,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB), color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB),


+ 135
- 0
lib/home/forward_view.dart 查看文件

@@ -0,0 +1,135 @@
import 'package:chat/data/chat_data_mgr.dart';
import 'package:chat/data/constants.dart';
import 'package:chat/data/group_data_mgr.dart';
import 'package:chat/generated/i18n.dart';
import 'package:chat/home/group_item_widget.dart';
import 'package:chat/home/last_chat_record_widget.dart';
import 'package:chat/models/ChatMsg.dart';
import 'package:chat/models/group_info_model.dart';
import 'package:chat/utils/CustomUI.dart';
import 'package:chat/utils/receive_share_file.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';


class ForwardPage extends StatefulWidget {
final MsgModel forwardMsg;
ForwardPage(this.forwardMsg);

@override
State<StatefulWidget> createState() {

return ForwardPageState();
}
}

class ForwardPageState extends State<ForwardPage>
with SingleTickerProviderStateMixin {
ScrollController _scrollController = ScrollController();

List<GroupInfoModel> groupList = [];
var lastMsgList = ChatDataMgr().lastMsgProvider.lastMsgList;

TabController tabCtrl;

@override
void initState() {
super.initState();

tabCtrl = TabController(length: 2, vsync: this);
groupList = GroupInfoMgr().groupInfoList;
if (groupList.length == 0) {
Future.delayed(Duration(seconds: 3), () {
setState(() {
groupList = GroupInfoMgr().groupInfoList;
});
});
}
}

@override
Widget build(BuildContext context) {
Widget appBar = new AppBar(
backgroundColor: AppColors.NewAppbarBgColor,
title: new Text(
'转发到',
style: TextStyle(color: AppColors.NewAppbarTextColor),
textScaleFactor: 1.0,
),
leading: CustomUI.buildCustomLeading(context),
centerTitle: true,
bottom: PreferredSize(
preferredSize: Size.fromHeight(28),
child: Container(
padding: EdgeInsets.only(left: 2),
decoration: BoxDecoration(
color: Constants.LightGreyBackgroundColor,
border: Border(bottom: BorderSide(color: Color(0xffeaeaea)))),
alignment: Alignment.centerLeft,
child: TabBar(
isScrollable: true,
indicatorPadding: EdgeInsets.only(left: 9, right: 9),
tabs: <Widget>[
Container(
margin: EdgeInsets.only(right: 4),
child:
Text(I18n.of(context).text_chat, textScaleFactor: 1.0),
),
Container(
margin: EdgeInsets.only(right: 4),
child: Text(I18n.of(context).group_chat,
textScaleFactor: 1.0)),
],
controller: tabCtrl,
),
)));

return Material(
child: SafeArea(
child: Scaffold(
appBar: appBar,
body: TabBarView(
children: <Widget>[
LastChatPage(
needRobot: false,
enterType: 2,
enterContent: widget.forwardMsg,
),

///群聊
groupList.length == 0
? Container()
: Container(
child: ListView.builder(
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
var info = groupList[index];
return GroupItem(
ValueKey(info),
groupInfoModel: info,
enterType: 2,
enterContent: widget.forwardMsg,
);
},
itemCount: groupList.length,
))
],
controller: tabCtrl,
),
),
),
);

// return SafeArea(child: Scaffold(body: FileReaderView(
// filePath: widget.filePath,
// ),));
}

@override
void dispose() {
super.dispose();
ReceiveShareFile.tempFilePath = null;
tabCtrl.dispose();
}
}

+ 4
- 0
lib/home/friend_page.dart 查看文件

@@ -215,6 +215,10 @@ class _FriendPageState extends State<FriendPage> {
Response res = Response res =
await HttpUtil().post('friendship/newFriends/record', data: data); await HttpUtil().post('friendship/newFriends/record', data: data);
if (res == null) {
return;
}
var resData = res.data; var resData = res.data;
if (resData['code'] == 0) { if (resData['code'] == 0) {
if (resData['data'] != null) { if (resData['data'] != null) {


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

@@ -12,7 +12,7 @@ import 'package:chat/utils/LoadingDialog.dart';
import 'package:chat/utils/MessageMgr.dart'; import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/TokenMgr.dart'; import 'package:chat/utils/TokenMgr.dart';
import 'package:chat/utils/app_navigator.dart'; import 'package:chat/utils/app_navigator.dart';
import 'package:chat/utils/file_transfer_page.dart';
import 'package:chat/utils/file_preview_local.dart';
import 'package:chat/utils/local_notification_util.dart'; import 'package:chat/utils/local_notification_util.dart';
import 'package:chat/utils/msgHandler.dart'; import 'package:chat/utils/msgHandler.dart';
import 'package:chat/utils/receive_share_file.dart'; import 'package:chat/utils/receive_share_file.dart';
@@ -256,7 +256,7 @@ class _HomeMainState extends State<HomeMain> {
Navigator.of(LoadingManage.context).push( Navigator.of(LoadingManage.context).push(
new MaterialPageRoute( new MaterialPageRoute(
builder: (context) { builder: (context) {
return FileTransferPage(data);
return FilePreview(data);
}, },
), ),
); );


+ 0
- 19
lib/home/last_chat_item.dart 查看文件

@@ -41,8 +41,6 @@ class _LastChatItemState extends State<LastChatItem> {
lastMessageModel = widget.lastMessageModel; lastMessageModel = widget.lastMessageModel;
initUserInfo(); initUserInfo();
// initUserInfo();
// initUserInfo();
MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo); MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo);
} }
@@ -162,22 +160,5 @@ class _LastChatItemState extends State<LastChatItem> {
enterType: widget.enterType, enterContent: widget.enterContent); enterType: widget.enterType, enterContent: widget.enterContent);
}, },
); );
// FutureBuilder(
// future: _friendInfoFuture,
// builder: (BuildContext context, AsyncSnapshot snapshot) {
// if (snapshot.connectionState == ConnectionState.done) {
// if (snapshot.hasError) {
// return Container();
// } else {
// UserInfo friendInfo = snapshot.data;
// if (friendInfo == null) {
// return Container();
// }
// } else {
// return Container();
// }
// });
} }
} }

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

@@ -17,7 +17,7 @@ import 'package:permission_handler/permission_handler.dart';
class LastChatPage extends StatefulWidget { class LastChatPage extends StatefulWidget {
final bool needRobot; final bool needRobot;
final int enterType; // 0默认 1图片
final int enterType; // 0默认 1图片 2转发消息
final dynamic enterContent; final dynamic enterContent;
LastChatPage({this.needRobot = true, this.enterType = 0, this.enterContent}); LastChatPage({this.needRobot = true, this.enterType = 0, this.enterContent});


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

@@ -89,7 +89,7 @@ class MyQr extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Row( Row(
children: <Widget>[ children: <Widget>[
Container(
Container(
constraints: BoxConstraints(maxWidth: 170), constraints: BoxConstraints(maxWidth: 170),
child: Text(name, child: Text(name,
textScaleFactor: 1.0, textScaleFactor: 1.0,


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

@@ -236,11 +236,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
I18n.onLocaleChanged = onLocaleChange; I18n.onLocaleChanged = onLocaleChange;
WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addObserver(this);
ReceiveShareFile.init(); ReceiveShareFile.init();
ScreenShot.getFileStream();
ScreenShot.getFileStream();
} }
isAvailableAppleSignIn() async { isAvailableAppleSignIn() async {
@@ -294,9 +290,6 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
MessageMgr().emit( MessageMgr().emit(
'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId); 'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId);
} }
break; break;
case AppLifecycleState.paused: // 应用程序不可见,后台 case AppLifecycleState.paused: // 应用程序不可见,后台
print('切换到后台'); print('切换到后台');


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

@@ -219,7 +219,7 @@ class PayWayContentState extends State<PayWayContent> {
webPage: url, webPage: url,
title: '点我代付[${widget.money}元]', title: '点我代付[${widget.money}元]',
thumbnail: thumbnail:
"http://datasm.chengyouhd.com/Upload/default/icon120.png",
"http://datasm.chengyouhd.com/Upload/default/icon120.png",
description: '[${UserData().basicInfo.nickName}]正在购买H币,点击帮我支付吧'); description: '[${UserData().basicInfo.nickName}]正在购买H币,点击帮我支付吧');
fluwx.share(model); fluwx.share(model);
} }


+ 16
- 20
lib/utils/CustomUI.dart 查看文件

@@ -1109,27 +1109,23 @@ class CustomUI {
if (height == null) { if (height == null) {
height = MediaQuery.of(context).size.height * 0.8; height = MediaQuery.of(context).size.height * 0.8;
} }
return InkWell(
onTap: null,
return Container(
width: MediaQuery.of(context).size.width,
height: height,
alignment: Alignment.topCenter,
child: Container( child: Container(
width: MediaQuery.of(context).size.width,
height: height,
alignment: Alignment.topCenter,
child: Container(
width: 40,
height: 40,
margin: EdgeInsets.only(top: 20),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white,
boxShadow: [
BoxShadow(blurRadius: 3.0, color: Colors.black26)
]),
child: new CircularProgressIndicator(
strokeWidth: 2,
),
)));
width: 40,
height: 40,
margin: EdgeInsets.only(top: 20),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white,
boxShadow: [BoxShadow(blurRadius: 3.0, color: Colors.black26)]),
child: new CircularProgressIndicator(
strokeWidth: 2,
),
));
} }
static Widget buildLoadingFooter() { static Widget buildLoadingFooter() {


+ 5
- 11
lib/utils/HttpUtil.dart 查看文件

@@ -282,15 +282,13 @@ class HttpUtil {
print('用户信息resData $resData'); print('用户信息resData $resData');
if (resData['code'] == 0) { if (resData['code'] == 0) {
var info = UserInfo.fromJson(resData['data']); var info = UserInfo.fromJson(resData['data']);
info.isBlackened
info.isBlackened
? BlacklistMgr.addBlackListMe(info.userId) ? BlacklistMgr.addBlackListMe(info.userId)
: BlacklistMgr.removeBalckListMe(info.userId); : BlacklistMgr.removeBalckListMe(info.userId);
info.isBlackList info.isBlackList
? BlacklistMgr.addMyBlackList(info.userId) ? BlacklistMgr.addMyBlackList(info.userId)
: BlacklistMgr.removeMyBalckList(info.userId); : BlacklistMgr.removeMyBalckList(info.userId);
friendCache[friendId] = info; friendCache[friendId] = info;
FriendListMgr().updateFriendInfo(info); FriendListMgr().updateFriendInfo(info);
UserInfoTable().insertUser(info); UserInfoTable().insertUser(info);
@@ -353,7 +351,6 @@ class HttpUtil {
if (resData['code'] == 0) { if (resData['code'] == 0) {
var info = UserInfo.fromJson(resData['data']); var info = UserInfo.fromJson(resData['data']);
info.isBlackened info.isBlackened
? BlacklistMgr.addBlackListMe(info.userId) ? BlacklistMgr.addBlackListMe(info.userId)
: BlacklistMgr.removeBalckListMe(info.userId); : BlacklistMgr.removeBalckListMe(info.userId);
@@ -361,7 +358,6 @@ class HttpUtil {
info.isBlackList info.isBlackList
? BlacklistMgr.addMyBlackList(info.userId) ? BlacklistMgr.addMyBlackList(info.userId)
: BlacklistMgr.removeMyBalckList(info.userId); : BlacklistMgr.removeMyBalckList(info.userId);
FriendListMgr().updateFriendInfo(info); FriendListMgr().updateFriendInfo(info);
friendCache[info.userId] = info; friendCache[info.userId] = info;
MessageMgr().emit('UpdateUserInfo', info); MessageMgr().emit('UpdateUserInfo', info);
@@ -1203,7 +1199,7 @@ class HttpUtil {
//根据经纬度获取用户国家城市 //根据经纬度获取用户国家城市
getAddress(double lon, double lat) async { getAddress(double lon, double lat) async {
Map data = { Map data = {
"lon": lon.toString(),
"lon": lon.toString(),
"lat": lat.toString(), "lat": lat.toString(),
}; };
data['sign'] = TokenMgr().getSign(data); data['sign'] = TokenMgr().getSign(data);
@@ -1244,12 +1240,12 @@ class HttpUtil {
} }
} }
//根据经纬度更新当前城市
//根据经纬度获取用户国家城市
changeCurrentCity(double lon, double lat, callback) async { changeCurrentCity(double lon, double lat, callback) async {
if (UserData().basicInfo.userId == null) return; if (UserData().basicInfo.userId == null) return;
Map data = { Map data = {
"userId": UserData().basicInfo.userId, "userId": UserData().basicInfo.userId,
"lon": lon.toString(),
"lon": lon.toString(),
"lat": lat.toString(), "lat": lat.toString(),
}; };
data['sign'] = TokenMgr().getSign(data); data['sign'] = TokenMgr().getSign(data);
@@ -1280,8 +1276,7 @@ class HttpUtil {
callback(resData['data']['UserId']); callback(resData['data']['UserId']);
} }
} }
//拉黑用户
//拉黑用户
blackUser(int userId, callback) async { blackUser(int userId, callback) async {
Map data = { Map data = {
"userid": UserData().basicInfo.userId, "userid": UserData().basicInfo.userId,
@@ -1354,7 +1349,6 @@ class HttpUtil {
callback(); callback();
} }
} }
//向企业服务助手提交信息 //向企业服务助手提交信息
Future<bool> commitInfoToCompany(MsgModel msgModel) async { Future<bool> commitInfoToCompany(MsgModel msgModel) async {
Map data = { Map data = {


+ 2
- 2
lib/utils/MessageBox.dart 查看文件

@@ -85,7 +85,7 @@ class _MessageBoxState extends State<MessageBox> {
), ),
); );
} else if (str == 'black') { } else if (str == 'black') {
HttpUtil().blackUser(userId, () {});
HttpUtil().blackUser(userId, () {});
} else if (str == 'noContent') { } else if (str == 'noContent') {
var data = { var data = {
"userId": UserData().basicInfo.userId, "userId": UserData().basicInfo.userId,
@@ -481,7 +481,7 @@ class _MessageBoxState extends State<MessageBox> {
_buildTimebox(data), _buildTimebox(data),
_buildImgSet(data), _buildImgSet(data),
_buildImgList(data), _buildImgList(data),
widget.isDetail ? Container() : _buildDivder(),
widget.isDetail ? Container() : _buildDivder(),
_buildIconButtonList(data), _buildIconButtonList(data),
//_buildContent(), //_buildContent(),
], ],


+ 3
- 3
lib/utils/NetUtil.dart 查看文件

@@ -160,7 +160,7 @@ class NetWork {
loginTimer?.cancel(); loginTimer?.cancel();
MsgHandler.flushCacheMsg(); MsgHandler.flushCacheMsg();
UploadUtil().setUploadUrl(msgContent.httpAddr); UploadUtil().setUploadUrl(msgContent.httpAddr);
GroupInfoMgr().checkGroupValid();
GroupInfoMgr().checkGroupValid();
} else { } else {
_stateBloc.addState(ChatState.loginFailed); _stateBloc.addState(ChatState.loginFailed);
print('登录失败${msgContent.errorCode}'); print('登录失败${msgContent.errorCode}');
@@ -323,7 +323,7 @@ class NetWork {
connectServerTimer?.cancel(); connectServerTimer?.cancel();
if (channel != null) { if (channel != null) {
await channel.sink.close();
await channel.sink.close();
channel = null; channel = null;
} }
}); });
@@ -415,7 +415,7 @@ class NetWork {
//清缓存 //清缓存
ChatDataMgr().logout(); ChatDataMgr().logout();
MsgHandler.clear(); MsgHandler.clear();
isNormalClose = true; isNormalClose = true;
close(); close();
} }


+ 254
- 212
lib/utils/TempUserCard.dart 查看文件

@@ -37,29 +37,31 @@ class TempUserCard extends StatelessWidget {


TempUserCard( TempUserCard(
{Key key, {Key key,
this.userName,
this.isReal: false,
this.city,
this.age,
this.constellation,
this.professional,
this.isOnline,
this.distance,
this.userId,
this.isLove: false,
this.sex,
this.headUrl: '',
this.payImg: false,
this.imgNum: 0,
this.isHidden: false,
this.member: 0,
this.hiddenDistince: false,
this.nameSize = 8,
this.isBalck: false})
this.userName,
this.isReal: false,
this.city,
this.age,
this.constellation,
this.professional,
this.isOnline,
this.distance,
this.userId,
this.isLove: false,
this.sex,
this.headUrl: '',
this.payImg: false,
this.imgNum: 0,
this.isHidden: false,
this.member: 0,
this.hiddenDistince: false,
this.nameSize = 8,
this.isBalck: false})
: super(key: key); : super(key: key);



@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

bool isVIP = member > 0; bool isVIP = member > 0;
bool isSVIP = member == 2; bool isSVIP = member == 2;


@@ -69,27 +71,27 @@ class TempUserCard extends StatelessWidget {
return Stack( return Stack(
children: <Widget>[ children: <Widget>[
Container( Container(
height: height - 40,
width: height - 40,
height: height-40,
width: height-40,
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(15), topLeft: Radius.circular(15),
topRight: Radius.circular(15)), topRight: Radius.circular(15)),
child: headUrl == '' || headUrl == null child: headUrl == '' || headUrl == null
? Image.asset( ? Image.asset(
Constants.DefaultHeadImgUrl,
width: height - 40,
height: height - 40,
)
Constants.DefaultHeadImgUrl,
width: height-40,
height: height-40,
)
: CachedNetworkImage( : CachedNetworkImage(
imageUrl: headUrl,
placeholder: (context, url) => Image.asset(
Constants.DefaultHeadImgUrl,
width: height - 40,
height: height - 40,
),
fit: BoxFit.cover,
)),
imageUrl: headUrl,
placeholder: (context, url) => Image.asset(
Constants.DefaultHeadImgUrl,
width: height-40,
height: height-40,
),
fit: BoxFit.cover,
)),
), ),
Positioned( Positioned(
left: 0, left: 0,
@@ -99,15 +101,16 @@ class TempUserCard extends StatelessWidget {
width: 54, width: 54,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black54, color: Colors.black54,
borderRadius:
BorderRadius.only(topRight: Radius.circular(10))),
borderRadius: BorderRadius.only(

topRight: Radius.circular(10))),
child: Row( child: Row(
//mainAxisAlignment: MainAxisAlignment.spaceEvenly, //mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only(left: 6), padding: EdgeInsets.only(left: 6),
child: child:
Icon(Icons.image, size: 15, color: Colors.white)),
Icon(Icons.image, size: 15, color: Colors.white)),
Padding( Padding(
padding: EdgeInsets.only(left: 5, top: 2), padding: EdgeInsets.only(left: 5, top: 2),
child: fixedText(imgNum.toString(), child: fixedText(imgNum.toString(),
@@ -128,25 +131,87 @@ class TempUserCard extends StatelessWidget {
fontSize: 15), fontSize: 15),
isReal && sex == 2 isReal && sex == 2
? Container( ? Container(
margin: EdgeInsets.only(left: 5),
padding:
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Constants.PurpleBackgroundColor,
),
child: fixedText('Real', fontSize: 8, color: Colors.white))
margin: EdgeInsets.only(left: 5),
padding:
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Constants.PurpleBackgroundColor,
),
child: fixedText('Real', fontSize: 8, color: Colors.white))
: Container(), : Container(),
isVIP && sex == 1 isVIP && sex == 1
? Container( ? Container(
margin: EdgeInsets.only(left: 5),
child: isSVIP ? Constants.svipIcon : Constants.vipIcon)
margin: EdgeInsets.only(left: 5),
child: isSVIP ? Constants.svipIcon : Constants.vipIcon)
: Container(), : Container(),
], ],
); );
} }


// void _selectValue(str) async {
// if (str == 'collection') {
// Map data = {
// "userid": UserData().basicInfo.userId,
// "type": 0,
// "followUserId": this.userId,
// };
// data['sign'] = TokenMgr().getSign(data);
// Response res = await HttpUtil()
// .post('userfollow/follow/insert', data: data, isShowLoading: true);
// Map resData = res.data;
// if (resData['code'] == 0) {
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 0});
// showToast(resData['msg']);
// }
// } else if (str == 'cancleCollection') {
// Map data = {
// "userid": UserData().basicInfo.userId,
// "type": 0,
// "followUserId": this.userId,
// };
// data['sign'] = TokenMgr().getSign(data);
// Response res = await HttpUtil()
// .post('userfollow/follow/cancel', data: data, isShowLoading: true);
// Map resData = res.data;
// if (resData['code'] == 0) {
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2});
// showToast(resData['msg']);
// }
// } else if (str == 'black') {
// Map data = {
// "userid": UserData().basicInfo.userId,
// "type": 1,
// "followUserId": this.userId,
// };
// data['sign'] = TokenMgr().getSign(data);

// Response res =
// await HttpUtil().post('userfollow/follow/insert', data: data);
// Map resData = res.data;
// showToast(resData['msg']);
// if (resData['code'] == 0) {
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 1});
// }
// } else if (str == 'cancleBlack') {
// var data = {
// "userid": UserData().basicInfo.userId,
// "type": 1,
// "followUserId": this.userId,
// };
// data['sign'] = TokenMgr().getSign(data);

// Response res =
// await HttpUtil().post('userfollow/follow/cancel', data: data);
// Map resData = res.data;
// showToast(resData['msg']);
// if (resData['code'] == 0) {
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2});
// }
// }
// }

//距离、在线以及相册 //距离、在线以及相册
Widget otherWidget() { Widget otherWidget() {
var greyColor = const Color(0xFFB2B2B2); var greyColor = const Color(0xFFB2B2B2);
@@ -157,8 +222,8 @@ class TempUserCard extends StatelessWidget {
title: hiddenDistince title: hiddenDistince
? I18n.of(context).secrecy ? I18n.of(context).secrecy
: (UserData().hasLocationPermission : (UserData().hasLocationPermission
? WebData().getDistanceString(distance)
: I18n.of(context).unknown),
? WebData().getDistanceString(distance)
: I18n.of(context).unknown),
titleColor: greyColor, titleColor: greyColor,
isDivider: true), isDivider: true),
InfoTile( InfoTile(
@@ -167,24 +232,24 @@ class TempUserCard extends StatelessWidget {
isDivider: payImg || isHidden), isDivider: payImg || isHidden),
isHidden isHidden
? InfoTile( ? InfoTile(
icon: IconData(0xe645, fontFamily: 'iconfont'),
iconHeight: 22,
title: I18n.of(context).application_view,
titleColor: greyColor,
isDivider: false,
onTap: () {
print('click');
})
icon: IconData(0xe645, fontFamily: 'iconfont'),
iconHeight: 22,
title: I18n.of(context).application_view,
titleColor: greyColor,
isDivider: false,
onTap: () {
print('click');
})
: Container(), : Container(),
payImg payImg
? InfoTile( ? InfoTile(
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily),
title: I18n.of(context).paid_photo,
titleColor: greyColor,
isDivider: false,
onTap: () {
print('click');
})
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily),
title: I18n.of(context).paid_photo,
titleColor: greyColor,
isDivider: false,
onTap: () {
print('click');
})
: Container(), : Container(),
], ],
); );
@@ -209,148 +274,125 @@ class TempUserCard extends StatelessWidget {
), ),
); );
}, },
child: Container(
alignment: Alignment.center,
color: AppColors.NewAppbarBgColor,
width: Screen.width,
child: Container(
width: Screen.width - 40,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(
height: 23,
),
headImg(),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(15),
bottomRight: Radius.circular(15))),
child: Column(
children: <Widget>[
Container(
//背景
padding: EdgeInsets.only(
left: 15, right: 10, bottom: 14.5, top: 5),
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Row(
children: <Widget>[
//头像图片

//信息
Container(
width: MediaQuery.of(context)
.size
.width -
104,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.end,
children: <Widget>[
nameState(), //名字以及状态
//用户的信息标记
Padding(
padding:
EdgeInsets.only(top: 9)),
TempUserChips(
city: city,
age: age,
constellation: constellation,
professional: professional),
Padding(
padding:
EdgeInsets.only(top: 4)),
otherWidget(),
],
)),
],
),
],
)
],
)),
SizedBox(
height: 5,
),
Container(
child: //赞
sex == UserData().basicInfo.sex
? InkWell(
onTap: () {
showToast(UserData().isMan()
? I18n.of(context).not_love
: I18n.of(context).not_love2);
},
child: Container(
width: 100,
height: 30,
decoration: BoxDecoration(
border: Border.all(
color: Color(0xFF878787),
width: 1),
borderRadius:
BorderRadius.circular(16)),
padding: EdgeInsets.only(
left: 15,
right: 15,
bottom: 5,
top: 5),
child: Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Icon(
IconData(
0xe625,
fontFamily:
Constants.IconFontFamily,
),
size: 15,
color: Color(0xffB2B2B2),
),
SizedBox(
width: 5,
),
Text(
'LOVE',
style: prefix0.TextStyle(
color: Color(0xffB2B2B2)),
)
],
)))
: LoveToggle(
isActive: isLove,
onTap: (bool isActive) async {
if (isActive) {
HttpUtil().setLove(userId, () {
MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 0});
});
} else {
HttpUtil().cancleLove(userId, () {
MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 2});
});
}
}),
),
SizedBox(
height: 15,
),
],
),
),
],
),
),
));
child: Container(alignment: Alignment.center,color: AppColors.NewAppbarBgColor,width: Screen.width,child: Container(width: Screen.width-40,child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(height: 23,),
headImg(),


Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(15),
bottomRight: Radius.circular(15))) ,child: Column(children: <Widget>[
Container(
//背景
padding: EdgeInsets.only(left: 15,right: 10, bottom: 14.5,top: 5),
child: Column(children: <Widget>[
Stack(
children: <Widget>[
Row(
children: <Widget>[
//头像图片

//信息
Container(
width: MediaQuery.of(context).size.width - 104,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
nameState(), //名字以及状态
//用户的信息标记
Padding(padding: EdgeInsets.only(top: 9)),
TempUserChips(
city: city,
age: age,
constellation: constellation,
professional: professional),
Padding(padding: EdgeInsets.only(top: 4)),
otherWidget(),
],
)),
],
),

],
)
],)),
SizedBox(height: 5,),
Container(

child: //赞
sex == UserData().basicInfo.sex
? InkWell(
onTap: () {
showToast(UserData().isMan()
? I18n.of(context).not_love
: I18n.of(context).not_love2);
},
child: Container(
width: 100,
height: 30,
decoration: BoxDecoration(border: Border.all(color: Color(0xFF878787), width: 1),borderRadius: BorderRadius.circular(16)) ,
padding: EdgeInsets.only(
left: 15, right: 15, bottom: 5,top: 5 ),
child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Icon(
IconData(
0xe625,
fontFamily: Constants.IconFontFamily,
),
size: 15,
color: Color(0xffB2B2B2),
),
SizedBox(width: 5,),
Text('LOVE',style: prefix0.TextStyle(color: Color(0xffB2B2B2)),)
],)))
: LoveToggle(isActive: isLove,onTap: (bool isActive) async {
Map data = {
"userid": UserData().basicInfo.userId,
"type": 0,
"followUserId": this.userId,
};
data['sign'] = TokenMgr().getSign(data);
if (isActive) {
Response res = await HttpUtil().post(
'userfollow/follow/insert',
data: data,
isShowLoading: true);
Map resData = res.data;
showToast(resData['msg']);
if (resData['code'] == 0) {
MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 0});
showToast(resData['msg']);
}
} else {
Response res = await HttpUtil().post(
'userfollow/follow/cancel',
data: data,
isShowLoading: true);
Map resData = res.data;
if (resData['code'] == 0) {
MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 2});
showToast(resData['msg']);
}
}
}),
),
SizedBox(height: 15,),



],),),





],
),),));
} }
} }


@@ -367,12 +409,12 @@ class InfoTile extends StatelessWidget {


const InfoTile( const InfoTile(
{Key key, {Key key,
this.title,
this.titleColor,
this.icon,
this.onTap,
this.iconHeight: TileHeight,
this.isDivider = false})
this.title,
this.titleColor,
this.icon,
this.onTap,
this.iconHeight: TileHeight,
this.isDivider = false})
: super(key: key); : super(key: key);


@override @override


+ 4
- 3
lib/utils/UserCard.dart 查看文件

@@ -276,13 +276,14 @@ class UserCard extends StatelessWidget {
isActive: isLove, isActive: isLove,
size: 16, size: 16,
onTap: (bool isActive) async { onTap: (bool isActive) async {
if (isActive) { if (isActive) {
HttpUtil().setLove(userId, () {
HttpUtil().setLove(userId, () {
MessageMgr().emit('refresh_love_list', MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 0}); {'UserId': userId, 'flag': 0});
}); });
} else { } else {
HttpUtil().cancleLove(userId, () {
HttpUtil().cancleLove(userId, () {
MessageMgr().emit('refresh_love_list', MessageMgr().emit('refresh_love_list',
{'UserId': userId, 'flag': 2}); {'UserId': userId, 'flag': 2});
}); });
@@ -342,7 +343,7 @@ class InfoTile extends StatelessWidget {
Container( Container(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
constraints: BoxConstraints(minHeight: 17), constraints: BoxConstraints(minHeight: 17),
padding: EdgeInsets.only(right: 5, bottom: 1.5),
padding: EdgeInsets.only(right: 5,bottom: 1.5),
child: Text(title, child: Text(title,
textScaleFactor: 1.0, textScaleFactor: 1.0,
style: TextStyle( style: TextStyle(


+ 30
- 11
lib/utils/app_navigator.dart 查看文件

@@ -10,6 +10,7 @@ import 'package:chat/home/ProfilePage.dart';
import 'package:chat/home/SearchPage.dart'; import 'package:chat/home/SearchPage.dart';
import 'package:chat/home/audio_chat_view.dart'; import 'package:chat/home/audio_chat_view.dart';
import 'package:chat/home/create_group_view.dart'; import 'package:chat/home/create_group_view.dart';
import 'package:chat/home/forward_view.dart';
import 'package:chat/home/group_all_member.dart'; import 'package:chat/home/group_all_member.dart';
import 'package:chat/home/group_qr_view.dart'; import 'package:chat/home/group_qr_view.dart';
import 'package:chat/home/homeMain.dart'; import 'package:chat/home/homeMain.dart';
@@ -99,23 +100,36 @@ class AppNavigator {
} }
//聊天 //聊天
static pushChatPage(BuildContext context, int friendId,{enterType=0,enterContent}) async {
if(enterType==1){
static pushChatPage(BuildContext context, int friendId,
{enterType = 0, enterContent}) async {
if (enterType == 1) {
Navigator.of(context).pop(context); Navigator.of(context).pop(context);
} }
AppNavigator.push(context, ChatPage(key: Key('Chat'), friendId: friendId,enterType: enterType,enterContent: enterContent,));
AppNavigator.push(
context,
ChatPage(
key: Key('Chat'),
friendId: friendId,
enterType: enterType,
enterContent: enterContent,
));
} }
//群聊 //群聊
static pushGroupChatPage(
BuildContext context, GroupInfoModel groupInfoModel,{enterType=0,enterContent}) async {
if(enterType==1){
static pushGroupChatPage(BuildContext context, GroupInfoModel groupInfoModel,
{enterType = 0, enterContent}) async {
if (enterType == 1) {
Navigator.of(context).pop(context); Navigator.of(context).pop(context);
} }
AppNavigator.defaultPush(context,
GroupChatPage(key: Key('GroupChat'), groupInfoModel: groupInfoModel,enterType: enterType,enterContent: enterContent,));
AppNavigator.defaultPush(
context,
GroupChatPage(
key: Key('GroupChat'),
groupInfoModel: groupInfoModel,
enterType: enterType,
enterContent: enterContent,
));
} }
//客服 //客服
@@ -129,7 +143,7 @@ class AppNavigator {
} }
//群聊二维码 //群聊二维码
static pushGroupQrPage(BuildContext context,GroupInfoModel model) {
static pushGroupQrPage(BuildContext context, GroupInfoModel model) {
AppNavigator.push(context, GroupQrPage(model)); AppNavigator.push(context, GroupQrPage(model));
} }
@@ -205,7 +219,7 @@ class AppNavigator {
AppNavigator.push(context, TranslateRobotPage()); AppNavigator.push(context, TranslateRobotPage());
} }
//进入反馈小助手页面
//进入反馈小助手页面
static pushCompanyServerPage(BuildContext context) { static pushCompanyServerPage(BuildContext context) {
AppNavigator.push(context, CompanyServerPage()); AppNavigator.push(context, CompanyServerPage());
} }
@@ -215,5 +229,10 @@ class AppNavigator {
BuildContext context, List<FriendModel> friendList) { BuildContext context, List<FriendModel> friendList) {
AppNavigator.push( AppNavigator.push(
context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null)); context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null));
}
//发起群聊界面
static pushForwardPage(BuildContext context, MsgModel msg) {
AppNavigator.push(context, ForwardPage(msg));
} }
} }

+ 134
- 0
lib/utils/file_preview_local.dart 查看文件

@@ -0,0 +1,134 @@
import 'package:chat/data/chat_data_mgr.dart';
import 'package:chat/data/constants.dart';
import 'package:chat/data/group_data_mgr.dart';
import 'package:chat/generated/i18n.dart';
import 'package:chat/home/group_item_widget.dart';
import 'package:chat/home/last_chat_record_widget.dart';
import 'package:chat/models/group_info_model.dart';
import 'package:chat/utils/receive_share_file.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'CustomUI.dart';

class FilePreview extends StatefulWidget {
final String filePath;
FilePreview(this.filePath);

@override
State<StatefulWidget> createState() {

return FilePreviewState();
}
}

class FilePreviewState extends State<FilePreview>
with SingleTickerProviderStateMixin {
ScrollController _scrollController = ScrollController();

List<GroupInfoModel> groupList = [];
var lastMsgList = ChatDataMgr().lastMsgProvider.lastMsgList;

TabController tabCtrl;

@override
void initState() {
super.initState();

tabCtrl = TabController(length: 2, vsync: this);
groupList = GroupInfoMgr().groupInfoList;
if (groupList.length == 0) {
Future.delayed(Duration(seconds: 3), () {
setState(() {
groupList = GroupInfoMgr().groupInfoList;
});
});
}
}

@override
Widget build(BuildContext context) {
Widget appBar = new AppBar(
backgroundColor: AppColors.NewAppbarBgColor,
title: new Text(
'发送图片到',
style: TextStyle(color: AppColors.NewAppbarTextColor),
textScaleFactor: 1.0,
),
leading: CustomUI.buildCustomLeading(context),
centerTitle: true,
bottom: PreferredSize(
preferredSize: Size.fromHeight(28),
child: Container(
padding: EdgeInsets.only(left: 2),
decoration: BoxDecoration(
color: Constants.LightGreyBackgroundColor,
border: Border(bottom: BorderSide(color: Color(0xffeaeaea)))),
alignment: Alignment.centerLeft,
child: TabBar(
isScrollable: true,
indicatorPadding: EdgeInsets.only(left: 9, right: 9),
tabs: <Widget>[
Container(
margin: EdgeInsets.only(right: 4),
child:
Text(I18n.of(context).text_chat, textScaleFactor: 1.0),
),
Container(
margin: EdgeInsets.only(right: 4),
child: Text(I18n.of(context).group_chat,
textScaleFactor: 1.0)),
],
controller: tabCtrl,
),
)));

return Material(
child: SafeArea(
child: Scaffold(
appBar: appBar,
body: TabBarView(
children: <Widget>[
LastChatPage(
needRobot: false,
enterType: 1,
enterContent: widget.filePath,
),

///群聊
groupList.length == 0
? Container()
: Container(
child: ListView.builder(
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
var info = groupList[index];
return GroupItem(
ValueKey(info),
groupInfoModel: info,
enterType: 1,
enterContent: widget.filePath,
);
},
itemCount: groupList.length,
))
],
controller: tabCtrl,
),
),
),
);

// return SafeArea(child: Scaffold(body: FileReaderView(
// filePath: widget.filePath,
// ),));
}

@override
void dispose() {
super.dispose();
ReceiveShareFile.tempFilePath = null;
tabCtrl.dispose();
}
}

+ 8
- 1
lib/utils/msgHandler.dart 查看文件

@@ -218,6 +218,7 @@ class MsgHandler {
print('消息包大小超过3M'); print('消息包大小超过3M');
} }
//本地文件为空或者等发送成功之后才可以发送
if (msg.localFile == null || msg.state >= MsgState.Uploaded) { if (msg.localFile == null || msg.state >= MsgState.Uploaded) {
Future.delayed(Duration(seconds: 60), () { Future.delayed(Duration(seconds: 60), () {
if (msg.state != MsgState.SendingSuccess) { if (msg.state != MsgState.SendingSuccess) {
@@ -239,6 +240,7 @@ class MsgHandler {
seq.targetId = curActiveSession; seq.targetId = curActiveSession;
if (curActiveSession == 10000) { if (curActiveSession == 10000) {
seq.channelType = ChatChannelType.CSD; seq.channelType = ChatChannelType.CSD;
} else { } else {
seq.channelType = seq.channelType =
@@ -527,7 +529,12 @@ class MsgHandler {
msgModel.state = MsgState.DownloadFailed; msgModel.state = MsgState.DownloadFailed;
} }
} }
if (msgModel.sessionId == 10000 ) {
print('收到反馈小助手消息');
}
if (msgModel.sessionId == curActiveSession) { if (msgModel.sessionId == curActiveSession) {
MessageMgr().emit('New Chat Message', msgModel.sessionId); MessageMgr().emit('New Chat Message', msgModel.sessionId);
} }
} }
@@ -918,7 +925,7 @@ class MsgHandler {
NetWork().singOut(); NetWork().singOut();
UserData().reset(); UserData().reset();
break; break;
case 'blacklist':
case 'blacklist':
String messageJson = map['message']; String messageJson = map['message'];
Map messageMap = json.decode(messageJson); Map messageMap = json.decode(messageJson);
if (messageMap['Status'] == 0) { if (messageMap['Status'] == 0) {


+ 21
- 8
lib/utils/receive_share_file.dart 查看文件

@@ -9,6 +9,8 @@ class ReceiveShareFile {
static List<SharedMediaFile> _sharedFiles; static List<SharedMediaFile> _sharedFiles;
static String tempFilePath; static String tempFilePath;


static int mLastClickTime = 0;
static final int TIME_INTERVAL = 3000;


static void init() { static void init() {
// For sharing images coming from outside the app while the app is in the memory // For sharing images coming from outside the app while the app is in the memory
@@ -21,8 +23,12 @@ class ReceiveShareFile {
// print('#### getfilePath ${value[0].path}'); // print('#### getfilePath ${value[0].path}');


if (currentIndex == 1) { if (currentIndex == 1) {
if (value != null && value.length > 0) {
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path);
int nowTime = DateTime.now().millisecondsSinceEpoch;

if (nowTime - mLastClickTime > TIME_INTERVAL) {
if (value != null && value.length > 0) {
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path);
}
} }
} else { } else {
// print("### 记录下来了1"); // print("### 记录下来了1");
@@ -44,9 +50,14 @@ class ReceiveShareFile {
// print('#### getfilePath ${value[0].path}'); // print('#### getfilePath ${value[0].path}');


if (currentIndex == 1) { if (currentIndex == 1) {
if (value != null && value.length > 0) {
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path);
}
int nowTime = DateTime.now().millisecondsSinceEpoch;
if (nowTime - mLastClickTime > TIME_INTERVAL) {
// do something
if (value != null && value.length > 0) {
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path);
mLastClickTime = nowTime;
}
} else {}
} else { } else {
// print("### 记录下来了"); // print("### 记录下来了");
if (value != null && value.length > 0) { if (value != null && value.length > 0) {
@@ -58,9 +69,11 @@ class ReceiveShareFile {
// For sharing or opening urls/text coming from outside the app while the app is in the memory // For sharing or opening urls/text coming from outside the app while the app is in the memory
_intentDataStreamSubscription = _intentDataStreamSubscription =
ReceiveSharingIntent.getTextStream().listen((String value) { ReceiveSharingIntent.getTextStream().listen((String value) {
print('#### getfilePath dddd $value ');

MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value);
print('#### getfilePath $value ');
// setState(() {
// _sharedText = value;
// print("Shared: $_sharedText");
// });
}, onError: (err) { }, onError: (err) {
print("getLinkStream error: $err"); print("getLinkStream error: $err");
}); });


+ 6
- 6
lib/utils/screen.dart 查看文件

@@ -63,12 +63,12 @@ fixedText(data, {Color color, double fontSize, FontWeight fontWeight}) {
extendedText(String text, extendedText(String text,
{Color color = Colors.blue, {Color color = Colors.blue,
double fontSize = 14,
selectionEnabled = false,
double emojisize = 20.0,
Function hideKeyboard,
fontWeight,int maxLines,
Function onSpecialTextTap
double fontSize = 14,
selectionEnabled = false,
double emojisize = 20.0,
Function hideKeyboard,
fontWeight,int maxLines,
Function onSpecialTextTap
}) { }) {
return ExtendedText( return ExtendedText(
text, text,


+ 2
- 7
lib/utils/screen_shot.dart 查看文件

@@ -1,20 +1,16 @@
import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
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_image_compress/flutter_image_compress.dart';
import 'MessageMgr.dart'; import 'MessageMgr.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');
static const EventChannel eventChannel =
static const EventChannel eventChannel =
const EventChannel('com.file.hibok'); const EventChannel('com.file.hibok');
static Future<List<int>> takeScreenshotImage() async { static Future<List<int>> takeScreenshotImage() async {
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);
@@ -45,7 +41,6 @@ class ScreenShot {
return _channel.invokeMethod('isSupportGoogle', args); return _channel.invokeMethod('isSupportGoogle', args);
} }
static getFileStream() { static getFileStream() {
eventChannel.receiveBroadcastStream().listen((Object agrs){ eventChannel.receiveBroadcastStream().listen((Object agrs){
print('######## receiveBroadcastStream $agrs'); print('######## receiveBroadcastStream $agrs');


正在載入中…
取消
儲存