Pārlūkot izejas kodu

Merge branch 'temp'

master
zcm pirms 5 gadiem
vecāks
revīzija
bb6717a217
44 mainītis faili ar 756 papildinājumiem un 451 dzēšanām
  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 Parādīt failu

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


+ 5
- 5
ios/Flutter/flutter_export_environment.sh Parādīt failu

@@ -1,10 +1,10 @@
#!/bin/sh
# 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 "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_NUMBER=6"

+ 20
- 20
ios/Runner.xcodeproj/project.pbxproj Parādīt failu

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


+ 1
- 1
ios/Runner/Runner.entitlements Parādīt failu

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

+ 1
- 1
ios/Runner/RunnerProfile.entitlements Parādīt failu

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

+ 1
- 1
ios/Share Extension/Share Extension.entitlements Parādīt failu

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

+ 1
- 1
ios/Share Extension/Share ExtensionProfile.entitlements Parādīt failu

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

+ 1
- 1
ios/Share Extension/ShareViewController.swift Parādīt failu

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

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


+ 14
- 8
lib/chat/ChatPage.dart Parādīt failu

@@ -36,8 +36,6 @@ import 'ChatPageItem.dart';
import 'input_bar.dart';
import 'package:chat/utils/PopUpMenu.dart' as myPop;
import 'package:chat/models/money_change.dart';
class ChatPage extends StatefulWidget {
final int friendId;
final int enterType; // 0默认 1图片
@@ -197,14 +195,22 @@ class _ChatPageState extends State<ChatPage> {
if (widget.enterType == 1) {
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 Parādīt failu

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


+ 13
- 0
lib/chat/group_chat_view.dart Parādīt failu

@@ -106,6 +106,19 @@ class _GroupChatPageState extends State<GroupChatPage> {
if (widget.enterType == 1) {
print('接收到的:${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 Parādīt failu

@@ -163,8 +163,7 @@ class UtilKeyboard extends StatelessWidget {
showToast(I18n.of(context).cantt_voice);
return;
}
if (BlacklistMgr.isBlaklistMe(info.userId)) {
if (BlacklistMgr.isBlaklistMe(info.userId)) {
showToast(I18n.of(context).you_are_blaklisted);
return;
}
@@ -304,38 +303,39 @@ class UtilKeyboard extends StatelessWidget {
int fileSize = file.lengthSync();
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 {


+ 0
- 1
lib/data/UserData.dart Parādīt failu

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


+ 8
- 43
lib/generated/i18n.dart Parādīt failu

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

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

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

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

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

@override
TextDirection get textDirection => TextDirection.ltr;


+ 5
- 4
lib/home/AddProgram.dart Parādīt failu

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


+ 2
- 0
lib/home/DiscoverPage.dart Parādīt failu

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


+ 1
- 2
lib/home/EditData.dart Parādīt failu

@@ -742,8 +742,7 @@ class _EditPageState extends State<EditPage> {
widget.isEditPage ? idItem : Container(),
_buildDivider(),
_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(),
_bottomBorderBox(I18n.of(context).country, country, false, null,
countryId.length != 0, selectCountry),


+ 1
- 2
lib/home/InfoList.dart Parādīt failu

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


+ 2
- 1
lib/home/Myprogram.dart Parādīt failu

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


+ 8
- 8
lib/home/ProfilePage.dart Parādīt failu

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


+ 2
- 3
lib/home/ProgramDetail.dart Parādīt failu

@@ -119,7 +119,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> {
textScaleFactor: 1.0,
style: TextStyle(color: AppColors.NewAppbarTextColor),
),
elevation: 1,
elevation: 1,
leading: CustomUI.buildCustomLeading(context),
centerTitle: true,
);
@@ -553,8 +553,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> {
list.add(button);
}
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(
crossAxisAlignment: CrossAxisAlignment.start,
children: list,


+ 1
- 1
lib/home/SearchPage.dart Parādīt failu

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


+ 2
- 2
lib/home/create_group_view.dart Parādīt failu

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


+ 2
- 2
lib/home/daily_bonus_page.dart Parādīt failu

@@ -526,8 +526,8 @@ class DailyBouusState extends State with SingleTickerProviderStateMixin {
height: 37,
child: Image.asset(
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(
color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB),


+ 135
- 0
lib/home/forward_view.dart Parādīt failu

@@ -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 Parādīt failu

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


+ 2
- 2
lib/home/homeMain.dart Parādīt failu

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


+ 0
- 19
lib/home/last_chat_item.dart Parādīt failu

@@ -41,8 +41,6 @@ class _LastChatItemState extends State<LastChatItem> {
lastMessageModel = widget.lastMessageModel;
initUserInfo();
// initUserInfo();
// initUserInfo();
MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo);
}
@@ -162,22 +160,5 @@ class _LastChatItemState extends State<LastChatItem> {
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 Parādīt failu

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


+ 1
- 1
lib/home/my_qr.dart Parādīt failu

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


+ 1
- 8
lib/main.dart Parādīt failu

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


+ 1
- 1
lib/utils/ChargeMoney.dart Parādīt failu

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


+ 16
- 20
lib/utils/CustomUI.dart Parādīt failu

@@ -1109,27 +1109,23 @@ class CustomUI {
if (height == null) {
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(
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() {


+ 5
- 11
lib/utils/HttpUtil.dart Parādīt failu

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


+ 2
- 2
lib/utils/MessageBox.dart Parādīt failu

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


+ 3
- 3
lib/utils/NetUtil.dart Parādīt failu

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


+ 254
- 212
lib/utils/TempUserCard.dart Parādīt failu

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

TempUserCard(
{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);


@override
Widget build(BuildContext context) {

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

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

topRight: Radius.circular(10))),
child: Row(
//mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 6),
child:
Icon(Icons.image, size: 15, color: Colors.white)),
Icon(Icons.image, size: 15, color: Colors.white)),
Padding(
padding: EdgeInsets.only(left: 5, top: 2),
child: fixedText(imgNum.toString(),
@@ -128,25 +131,87 @@ class TempUserCard extends StatelessWidget {
fontSize: 15),
isReal && sex == 2
? 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(),
isVIP && sex == 1
? Container(
margin: EdgeInsets.only(left: 5),
child: isSVIP ? Constants.svipIcon : Constants.vipIcon)
margin: EdgeInsets.only(left: 5),
child: isSVIP ? Constants.svipIcon : Constants.vipIcon)
: 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() {
var greyColor = const Color(0xFFB2B2B2);
@@ -157,8 +222,8 @@ class TempUserCard extends StatelessWidget {
title: hiddenDistince
? I18n.of(context).secrecy
: (UserData().hasLocationPermission
? WebData().getDistanceString(distance)
: I18n.of(context).unknown),
? WebData().getDistanceString(distance)
: I18n.of(context).unknown),
titleColor: greyColor,
isDivider: true),
InfoTile(
@@ -167,24 +232,24 @@ class TempUserCard extends StatelessWidget {
isDivider: payImg || isHidden),
isHidden
? 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(),
payImg
? 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(),
],
);
@@ -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(
{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);

@override


+ 4
- 3
lib/utils/UserCard.dart Parādīt failu

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


+ 30
- 11
lib/utils/app_navigator.dart Parādīt failu

@@ -10,6 +10,7 @@ import 'package:chat/home/ProfilePage.dart';
import 'package:chat/home/SearchPage.dart';
import 'package:chat/home/audio_chat_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_qr_view.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);
}
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);
}
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));
}
@@ -205,7 +219,7 @@ class AppNavigator {
AppNavigator.push(context, TranslateRobotPage());
}
//进入反馈小助手页面
//进入反馈小助手页面
static pushCompanyServerPage(BuildContext context) {
AppNavigator.push(context, CompanyServerPage());
}
@@ -215,5 +229,10 @@ class AppNavigator {
BuildContext context, List<FriendModel> friendList) {
AppNavigator.push(
context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null));
}
//发起群聊界面
static pushForwardPage(BuildContext context, MsgModel msg) {
AppNavigator.push(context, ForwardPage(msg));
}
}

+ 134
- 0
lib/utils/file_preview_local.dart Parādīt failu

@@ -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 Parādīt failu

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


+ 21
- 8
lib/utils/receive_share_file.dart Parādīt failu

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

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

static void init() {
// 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}');

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 {
// print("### 记录下来了1");
@@ -44,9 +50,14 @@ class ReceiveShareFile {
// print('#### getfilePath ${value[0].path}');

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 {
// print("### 记录下来了");
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
_intentDataStreamSubscription =
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) {
print("getLinkStream error: $err");
});


+ 6
- 6
lib/utils/screen.dart Parādīt failu

@@ -63,12 +63,12 @@ fixedText(data, {Color color, double fontSize, FontWeight fontWeight}) {
extendedText(String text,
{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(
text,


+ 2
- 7
lib/utils/screen_shot.dart Parādīt failu

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


Notiek ielāde…
Atcelt
Saglabāt