@@ -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.* | |||
@@ -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" |
@@ -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; | |||
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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] = [] | |||
@@ -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); | |||
} | |||
}); | |||
} | |||
@@ -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); | |||
@@ -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); | |||
} | |||
}); | |||
} | |||
@@ -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 { | |||
@@ -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); | |||
} | |||
} | |||
@@ -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; | |||
@@ -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 == "" | |||
@@ -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) | |||
@@ -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), | |||
@@ -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; | |||
@@ -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>( | |||
@@ -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); | |||
@@ -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, | |||
@@ -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(), | |||
@@ -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 == | |||
@@ -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), | |||
@@ -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(); | |||
} | |||
} |
@@ -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) { | |||
@@ -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); | |||
}, | |||
), | |||
); | |||
@@ -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(); | |||
// } | |||
// }); | |||
} | |||
} |
@@ -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}); | |||
@@ -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, | |||
@@ -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('切换到后台'); | |||
@@ -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); | |||
} | |||
@@ -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() { | |||
@@ -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 = { | |||
@@ -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(), | |||
], | |||
@@ -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(); | |||
} | |||
@@ -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 | |||
@@ -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( | |||
@@ -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)); | |||
} | |||
} |
@@ -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(); | |||
} | |||
} |
@@ -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) { | |||
@@ -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"); | |||
}); | |||
@@ -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, | |||
@@ -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'); | |||