@@ -61,6 +61,7 @@ | |||||
**/ios/Flutter/app.flx | **/ios/Flutter/app.flx | ||||
**/ios/Flutter/app.zip | **/ios/Flutter/app.zip | ||||
**/ios/Flutter/flutter_assets/ | **/ios/Flutter/flutter_assets/ | ||||
**/ios/Flutter/flutter_export_environment.sh | |||||
**/ios/ServiceDefinitions.json | **/ios/ServiceDefinitions.json | ||||
**/ios/Runner/GeneratedPluginRegistrant.* | **/ios/Runner/GeneratedPluginRegistrant.* | ||||
@@ -1,10 +1,10 @@ | |||||
#!/bin/sh | #!/bin/sh | ||||
# This is a generated file; do not edit or check into version control. | # This is a generated file; do not edit or check into version control. | ||||
export "FLUTTER_ROOT=G:\flutter" | |||||
export "FLUTTER_APPLICATION_PATH=G:\Hibok" | |||||
export "FLUTTER_TARGET=lib\main.dart" | |||||
export "FLUTTER_ROOT=/Users/random/sdk/flutter_sdk" | |||||
export "FLUTTER_APPLICATION_PATH=/Users/random/code/flutter/project/qunliao" | |||||
export "FLUTTER_TARGET=lib/main.dart" | |||||
export "FLUTTER_BUILD_DIR=build" | export "FLUTTER_BUILD_DIR=build" | ||||
export "SYMROOT=${SOURCE_ROOT}/../build\ios" | |||||
export "FLUTTER_FRAMEWORK_DIR=G:\flutter\bin\cache\artifacts\engine\ios" | |||||
export "SYMROOT=${SOURCE_ROOT}/../build/ios" | |||||
export "FLUTTER_FRAMEWORK_DIR=/Users/random/sdk/flutter_sdk/bin/cache/artifacts/engine/ios-release" | |||||
export "FLUTTER_BUILD_NAME=1.0.5" | export "FLUTTER_BUILD_NAME=1.0.5" | ||||
export "FLUTTER_BUILD_NUMBER=6" | export "FLUTTER_BUILD_NUMBER=6" |
@@ -270,12 +270,12 @@ | |||||
TargetAttributes = { | TargetAttributes = { | ||||
5C95C08D2406514F00CEBCE3 = { | 5C95C08D2406514F00CEBCE3 = { | ||||
CreatedOnToolsVersion = 11.3; | CreatedOnToolsVersion = 11.3; | ||||
DevelopmentTeam = 76U6VCZ8JY; | |||||
DevelopmentTeam = QJ9M3998Q6; | |||||
ProvisioningStyle = Automatic; | ProvisioningStyle = Automatic; | ||||
}; | }; | ||||
97C146ED1CF9000F007C117D = { | 97C146ED1CF9000F007C117D = { | ||||
CreatedOnToolsVersion = 7.3.1; | CreatedOnToolsVersion = 7.3.1; | ||||
DevelopmentTeam = 76U6VCZ8JY; | |||||
DevelopmentTeam = QJ9M3998Q6; | |||||
ProvisioningStyle = Automatic; | ProvisioningStyle = Automatic; | ||||
}; | }; | ||||
}; | }; | ||||
@@ -542,8 +542,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
"$(inherited)", | "$(inherited)", | ||||
@@ -557,7 +557,7 @@ | |||||
"$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
); | ); | ||||
MARKETING_VERSION = 1.0.7; | MARKETING_VERSION = 1.0.7; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
SWIFT_VERSION = 4.0; | SWIFT_VERSION = 4.0; | ||||
@@ -578,8 +578,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; | CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = YES; | ENABLE_BITCODE = YES; | ||||
GCC_C_LANGUAGE_STANDARD = gnu11; | GCC_C_LANGUAGE_STANDARD = gnu11; | ||||
INFOPLIST_FILE = "Share Extension/Info.plist"; | INFOPLIST_FILE = "Share Extension/Info.plist"; | ||||
@@ -589,7 +589,7 @@ | |||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||||
MTL_FAST_MATH = YES; | MTL_FAST_MATH = YES; | ||||
OTHER_LDFLAGS = ""; | OTHER_LDFLAGS = ""; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
SKIP_INSTALL = YES; | SKIP_INSTALL = YES; | ||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||||
@@ -610,8 +610,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; | CODE_SIGN_ENTITLEMENTS = "Share Extension/Share Extension.entitlements"; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = YES; | ENABLE_BITCODE = YES; | ||||
GCC_C_LANGUAGE_STANDARD = gnu11; | GCC_C_LANGUAGE_STANDARD = gnu11; | ||||
INFOPLIST_FILE = "Share Extension/Info.plist"; | INFOPLIST_FILE = "Share Extension/Info.plist"; | ||||
@@ -620,7 +620,7 @@ | |||||
MARKETING_VERSION = 1.0.7; | MARKETING_VERSION = 1.0.7; | ||||
MTL_FAST_MATH = YES; | MTL_FAST_MATH = YES; | ||||
OTHER_LDFLAGS = ""; | OTHER_LDFLAGS = ""; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
SKIP_INSTALL = YES; | SKIP_INSTALL = YES; | ||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; | ||||
@@ -640,8 +640,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = "Share Extension/Share ExtensionProfile.entitlements"; | CODE_SIGN_ENTITLEMENTS = "Share Extension/Share ExtensionProfile.entitlements"; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = YES; | ENABLE_BITCODE = YES; | ||||
GCC_C_LANGUAGE_STANDARD = gnu11; | GCC_C_LANGUAGE_STANDARD = gnu11; | ||||
INFOPLIST_FILE = "Share Extension/Info.plist"; | INFOPLIST_FILE = "Share Extension/Info.plist"; | ||||
@@ -650,7 +650,7 @@ | |||||
MARKETING_VERSION = 1.0.7; | MARKETING_VERSION = 1.0.7; | ||||
MTL_FAST_MATH = YES; | MTL_FAST_MATH = YES; | ||||
OTHER_LDFLAGS = ""; | OTHER_LDFLAGS = ""; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho.share; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok.share; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
SKIP_INSTALL = YES; | SKIP_INSTALL = YES; | ||||
@@ -777,8 +777,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
"$(inherited)", | "$(inherited)", | ||||
@@ -792,7 +792,7 @@ | |||||
"$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
); | ); | ||||
MARKETING_VERSION = 1.0.7; | MARKETING_VERSION = 1.0.7; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
SWIFT_VERSION = 4.0; | SWIFT_VERSION = 4.0; | ||||
@@ -811,8 +811,8 @@ | |||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||||
CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 9; | |||||
DEVELOPMENT_TEAM = 76U6VCZ8JY; | |||||
CURRENT_PROJECT_VERSION = 11; | |||||
DEVELOPMENT_TEAM = QJ9M3998Q6; | |||||
ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
"$(inherited)", | "$(inherited)", | ||||
@@ -826,7 +826,7 @@ | |||||
"$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
); | ); | ||||
MARKETING_VERSION = 1.0.7; | MARKETING_VERSION = 1.0.7; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.cyhd.henho; | |||||
PRODUCT_BUNDLE_IDENTIFIER = com.chengyouhudong.hibok; | |||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
SWIFT_VERSION = 4.0; | SWIFT_VERSION = 4.0; | ||||
@@ -10,7 +10,7 @@ | |||||
</array> | </array> | ||||
<key>com.apple.security.application-groups</key> | <key>com.apple.security.application-groups</key> | ||||
<array> | <array> | ||||
<string>group.com.cyhd.henho</string> | |||||
<string>group.com.chengyouhudong.hibok</string> | |||||
</array> | </array> | ||||
</dict> | </dict> | ||||
</plist> | </plist> |
@@ -10,7 +10,7 @@ | |||||
</array> | </array> | ||||
<key>com.apple.security.application-groups</key> | <key>com.apple.security.application-groups</key> | ||||
<array> | <array> | ||||
<string>group.com.cyhd.henho</string> | |||||
<string>group.com.chengyouhudong.hibok</string> | |||||
</array> | </array> | ||||
</dict> | </dict> | ||||
</plist> | </plist> |
@@ -4,7 +4,7 @@ | |||||
<dict> | <dict> | ||||
<key>com.apple.security.application-groups</key> | <key>com.apple.security.application-groups</key> | ||||
<array> | <array> | ||||
<string>group.com.cyhd.henho</string> | |||||
<string>group.com.chengyouhudong.hibok</string> | |||||
</array> | </array> | ||||
</dict> | </dict> | ||||
</plist> | </plist> |
@@ -4,7 +4,7 @@ | |||||
<dict> | <dict> | ||||
<key>com.apple.security.application-groups</key> | <key>com.apple.security.application-groups</key> | ||||
<array> | <array> | ||||
<string>group.com.cyhd.henho</string> | |||||
<string>group.com.chengyouhudong.hibok</string> | |||||
</array> | </array> | ||||
</dict> | </dict> | ||||
</plist> | </plist> |
@@ -5,7 +5,7 @@ import Photos | |||||
class ShareViewController: SLComposeServiceViewController { | class ShareViewController: SLComposeServiceViewController { | ||||
// TODO: IMPORTANT: This should be your host app bundle identifier | // TODO: IMPORTANT: This should be your host app bundle identifier | ||||
let hostAppBundleIdentifier = "com.cyhd.henho" | |||||
let hostAppBundleIdentifier = "com.chengyouhudong.hibok" | |||||
let sharedKey = "ShareKey" | let sharedKey = "ShareKey" | ||||
var sharedMedia: [SharedMediaFile] = [] | var sharedMedia: [SharedMediaFile] = [] | ||||
var sharedText: [String] = [] | var sharedText: [String] = [] | ||||
@@ -36,8 +36,6 @@ import 'ChatPageItem.dart'; | |||||
import 'input_bar.dart'; | import 'input_bar.dart'; | ||||
import 'package:chat/utils/PopUpMenu.dart' as myPop; | import 'package:chat/utils/PopUpMenu.dart' as myPop; | ||||
import 'package:chat/models/money_change.dart'; | import 'package:chat/models/money_change.dart'; | ||||
class ChatPage extends StatefulWidget { | class ChatPage extends StatefulWidget { | ||||
final int friendId; | final int friendId; | ||||
final int enterType; // 0默认 1图片 | final int enterType; // 0默认 1图片 | ||||
@@ -197,14 +195,22 @@ class _ChatPageState extends State<ChatPage> { | |||||
if (widget.enterType == 1) { | if (widget.enterType == 1) { | ||||
print('接收到的:${widget.enterContent}'); | print('接收到的:${widget.enterContent}'); | ||||
File file = new File(widget.enterContent); | |||||
if(file.existsSync()){ | |||||
print('接收到的文件--存在'); | |||||
}else{ | |||||
print('接收到的文件--不存在'); | |||||
_sendFile(File(widget.enterContent)); | |||||
} else if (widget.enterType == 2) { | |||||
//转发消息 | |||||
MsgModel originMsg = widget.enterContent; | |||||
MsgModel msg = MsgHandler.createSendMsg( | |||||
ChatType.valueOf(originMsg.msgType), originMsg.msgContent); | |||||
msg.extraInfo = originMsg.extraInfo; | |||||
msg.extraFile = originMsg.extraFile; | |||||
msg.localFile = originMsg.localFile; | |||||
msg.friendId = widget.friendId; | |||||
if (msg.localFile != null) { | |||||
msg.state = MsgState.Uploaded; | |||||
} | } | ||||
_sendFile(File(widget.enterContent)); | |||||
sendMsg(msg); | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@@ -614,6 +614,7 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
List<String> actions = [ | List<String> actions = [ | ||||
I18n.of(context).delete, | I18n.of(context).delete, | ||||
I18n.of(context).reply, | I18n.of(context).reply, | ||||
'转发' | |||||
]; | ]; | ||||
actionsFunc.add(() { | actionsFunc.add(() { | ||||
@@ -623,6 +624,11 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
print('发送引用的消息'); | print('发送引用的消息'); | ||||
MessageMgr().emit('Reply Select Message', widget.msg); | MessageMgr().emit('Reply Select Message', widget.msg); | ||||
}); | }); | ||||
actionsFunc.add(() { | |||||
print('转发消息'); | |||||
AppNavigator.pushForwardPage(context, widget.msg); | |||||
}); | |||||
if (widget.msg.msgType == ChatType.TextChatType.value) { | if (widget.msg.msgType == ChatType.TextChatType.value) { | ||||
actions.insert(0, I18n.of(context).copy); | actions.insert(0, I18n.of(context).copy); | ||||
@@ -106,6 +106,19 @@ class _GroupChatPageState extends State<GroupChatPage> { | |||||
if (widget.enterType == 1) { | if (widget.enterType == 1) { | ||||
print('接收到的:${widget.enterContent}'); | print('接收到的:${widget.enterContent}'); | ||||
_sendFile(File(widget.enterContent)); | _sendFile(File(widget.enterContent)); | ||||
} else if (widget.enterType == 2) { | |||||
//转发消息 | |||||
MsgModel originMsg = widget.enterContent; | |||||
MsgModel msg = MsgHandler.createSendMsg( | |||||
ChatType.valueOf(originMsg.msgType), originMsg.msgContent,channelType: ChatChannelType.Group); | |||||
msg.extraInfo = originMsg.extraInfo; | |||||
msg.extraFile = originMsg.extraFile; | |||||
msg.localFile = originMsg.localFile; | |||||
if (msg.localFile != null) { | |||||
msg.state = MsgState.Uploaded; | |||||
} | |||||
sendMsg(msg); | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@@ -163,8 +163,7 @@ class UtilKeyboard extends StatelessWidget { | |||||
showToast(I18n.of(context).cantt_voice); | showToast(I18n.of(context).cantt_voice); | ||||
return; | return; | ||||
} | } | ||||
if (BlacklistMgr.isBlaklistMe(info.userId)) { | |||||
if (BlacklistMgr.isBlaklistMe(info.userId)) { | |||||
showToast(I18n.of(context).you_are_blaklisted); | showToast(I18n.of(context).you_are_blaklisted); | ||||
return; | return; | ||||
} | } | ||||
@@ -304,38 +303,39 @@ class UtilKeyboard extends StatelessWidget { | |||||
int fileSize = file.lengthSync(); | int fileSize = file.lengthSync(); | ||||
print('选择的文件 ${file.path} 大小 $fileSize'); | print('选择的文件 ${file.path} 大小 $fileSize'); | ||||
if (fileSize > 33 * 1024 * 1024) { | |||||
showToast('文件大于33M'); | |||||
return; | |||||
} | |||||
if (fileSize > 33 * 1024 * 1024) { | |||||
showToast('文件大于33M'); | |||||
return; | |||||
} | |||||
int friendId = 0; | |||||
if (!isGroup) { | |||||
friendId = Provider.of<int>(context); | |||||
} | |||||
int friendId = 0; | |||||
if (!isGroup) { | |||||
friendId = Provider.of<int>(context); | |||||
} | |||||
var fileName = file.path.split('/').last; | |||||
print('fileName $fileName'); | |||||
var fileName = file.path.split('/').last; | |||||
print('fileName $fileName'); | |||||
var ext = ''; | |||||
var extList = fileName.split('.'); | |||||
if (extList.length > 1) { | |||||
ext = extList.last; | |||||
} | |||||
print('ext $ext'); | |||||
var ext = ''; | |||||
var extList = fileName.split('.'); | |||||
if (extList.length > 1) { | |||||
ext = extList.last; | |||||
} | |||||
print('ext $ext'); | |||||
var fileMsg = FileChat.create(); | |||||
fileMsg.type = ext; | |||||
fileMsg.size = fileSize; | |||||
fileMsg.name = fileName; | |||||
var fileMsg = FileChat.create(); | |||||
fileMsg.type = ext; | |||||
fileMsg.size = fileSize; | |||||
fileMsg.name = fileName; | |||||
var msg = MsgHandler.createSendMsg( | |||||
ChatType.FileChatType, fileMsg.writeToBuffer(), | |||||
friendId: friendId, | |||||
localFile: file.path, | |||||
channelType: isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||||
var msg = MsgHandler.createSendMsg(ChatType.FileChatType, fileMsg.writeToBuffer(), | |||||
friendId: friendId, | |||||
localFile: file.path, | |||||
channelType: | |||||
isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||||
sendMsg(msg); | |||||
sendMsg(msg); | |||||
} | } | ||||
void _sendVideo(BuildContext context) async { | void _sendVideo(BuildContext context) async { | ||||
@@ -219,7 +219,6 @@ class UserData { | |||||
await prefs.setDouble(Constants.Longitude, UserData().longitude); | await prefs.setDouble(Constants.Longitude, UserData().longitude); | ||||
HttpUtil().getAddress(loc.longitude, loc.latitude); | HttpUtil().getAddress(loc.longitude, loc.latitude); | ||||
//HttpUtil().getAddress(106.600798525456, 10.7517368433358); | //HttpUtil().getAddress(106.600798525456, 10.7517368433358); | ||||
//HttpUtil().getAddress(113.8669580078125, 22.568465711805555); | |||||
if (callback != null) callback(loc); | if (callback != null) callback(loc); | ||||
} | } | ||||
} | } | ||||
@@ -5846,7 +5846,8 @@ class _I18n_vi_VN extends I18n { | |||||
/// "你不能添加自己" | /// "你不能添加自己" | ||||
@override | @override | ||||
String get not_add_Myself => "你不能添加自己"; | String get not_add_Myself => "你不能添加自己"; | ||||
/// "对方已拉黑了你" | |||||
/// "对方已拉黑了你" | |||||
@override | @override | ||||
String get you_are_blaklisted => "对方已拉黑了你"; | String get you_are_blaklisted => "对方已拉黑了你"; | ||||
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" | /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" | ||||
@@ -8839,9 +8840,9 @@ class _I18n_zh_HK extends I18n { | |||||
/// "今日簽到可領取/s1積分" | /// "今日簽到可領取/s1積分" | ||||
@override | @override | ||||
String get today_score => "今日簽到可領取/s1積分"; | String get today_score => "今日簽到可領取/s1積分"; | ||||
/// "1、每日簽到可領取積分,累計天數越多積分越高。\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換。\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換。" | |||||
/// "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換" | |||||
@override | @override | ||||
String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高。\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換。\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換。"; | |||||
String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換"; | |||||
/// "簽到" | /// "簽到" | ||||
@override | @override | ||||
String get sign_in => "簽到"; | String get sign_in => "簽到"; | ||||
@@ -9340,15 +9341,6 @@ class _I18n_zh_HK extends I18n { | |||||
/// "你不能添加自己" | /// "你不能添加自己" | ||||
@override | @override | ||||
String get not_add_Myself => "你不能添加自己"; | String get not_add_Myself => "你不能添加自己"; | ||||
/// "對方已拉黑了你" | |||||
@override | |||||
String get you_are_blaklisted => "對方已拉黑了你"; | |||||
/// "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)" | |||||
@override | |||||
String get confrim_recovery => "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)"; | |||||
/// "發送到" | |||||
@override | |||||
String get send_to => "發送到"; | |||||
@override | @override | ||||
TextDirection get textDirection => TextDirection.ltr; | TextDirection get textDirection => TextDirection.ltr; | ||||
@@ -12333,9 +12325,9 @@ class _I18n_zh_CN extends _I18n_zh_HK { | |||||
/// "今日签到可领取/s1积分" | /// "今日签到可领取/s1积分" | ||||
@override | @override | ||||
String get today_score => "今日签到可领取/s1积分"; | String get today_score => "今日签到可领取/s1积分"; | ||||
/// "1、每日签到可领取积分,累计天数越多积分越高。\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换。\n3、每月最后一天将重置签到,清零积分,请记得及时兑换。" | |||||
/// "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换" | |||||
@override | @override | ||||
String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高。\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换。\n3、每月最后一天将重置签到,清零积分,请记得及时兑换。"; | |||||
String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换"; | |||||
/// "签到" | /// "签到" | ||||
@override | @override | ||||
String get sign_in => "签到"; | String get sign_in => "签到"; | ||||
@@ -12834,15 +12826,6 @@ class _I18n_zh_CN extends _I18n_zh_HK { | |||||
/// "你不能添加自己" | /// "你不能添加自己" | ||||
@override | @override | ||||
String get not_add_Myself => "你不能添加自己"; | String get not_add_Myself => "你不能添加自己"; | ||||
/// "对方已拉黑了你" | |||||
@override | |||||
String get you_are_blaklisted => "对方已拉黑了你"; | |||||
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" | |||||
@override | |||||
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; | |||||
/// "发送到" | |||||
@override | |||||
String get send_to => "发送到"; | |||||
@override | @override | ||||
TextDirection get textDirection => TextDirection.ltr; | TextDirection get textDirection => TextDirection.ltr; | ||||
@@ -16325,15 +16308,6 @@ class _I18n_ko_KR extends I18n { | |||||
/// "用户不存在" | /// "用户不存在" | ||||
@override | @override | ||||
String get not_have_user => "用户不存在"; | String get not_have_user => "用户不存在"; | ||||
/// "对方已拉黑了你" | |||||
@override | |||||
String get you_are_blaklisted => "对方已拉黑了你"; | |||||
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" | |||||
@override | |||||
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; | |||||
/// "發送到" | |||||
@override | |||||
String get send_to => "發送到"; | |||||
@override | @override | ||||
TextDirection get textDirection => TextDirection.ltr; | TextDirection get textDirection => TextDirection.ltr; | ||||
@@ -19318,9 +19292,9 @@ class _I18n_ja_JP extends I18n { | |||||
/// "本日サインして/s1ポイントが受け入れる" | /// "本日サインして/s1ポイントが受け入れる" | ||||
@override | @override | ||||
String get today_score => "本日サインして/s1ポイントが受け入れる"; | String get today_score => "本日サインして/s1ポイントが受け入れる"; | ||||
/// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください." | |||||
/// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください " | |||||
@override | @override | ||||
String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください."; | |||||
String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください "; | |||||
/// "サイン" | /// "サイン" | ||||
@override | @override | ||||
String get sign_in => "サイン"; | String get sign_in => "サイン"; | ||||
@@ -19819,15 +19793,6 @@ class _I18n_ja_JP extends I18n { | |||||
/// "你不能添加自己" | /// "你不能添加自己" | ||||
@override | @override | ||||
String get not_add_Myself => "你不能添加自己"; | String get not_add_Myself => "你不能添加自己"; | ||||
/// "对方已拉黑了你" | |||||
@override | |||||
String get you_are_blaklisted => "对方已拉黑了你"; | |||||
/// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" | |||||
@override | |||||
String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; | |||||
/// "發送到" | |||||
@override | |||||
String get send_to => "發送到"; | |||||
@override | @override | ||||
TextDirection get textDirection => TextDirection.ltr; | TextDirection get textDirection => TextDirection.ltr; | ||||
@@ -868,7 +868,8 @@ class _AddProgramState extends State<AddProgram> { | |||||
contentPadding: | contentPadding: | ||||
EdgeInsets.only(top: 6, bottom: 10, right: 10), | EdgeInsets.only(top: 6, bottom: 10, right: 10), | ||||
hintText: I18n.of(context).please_civilization, | hintText: I18n.of(context).please_civilization, | ||||
hintStyle: TextStyle(fontSize: 12, height: 1.15), | |||||
hintStyle: | |||||
TextStyle(fontSize: 12, height: 1.15), | |||||
border: InputBorder.none, | border: InputBorder.none, | ||||
), | ), | ||||
style: TextStyle( | style: TextStyle( | ||||
@@ -1157,7 +1158,7 @@ class _AddProgramState extends State<AddProgram> { | |||||
.replaceFirst('/s1', UserData().addProgramPrice.toString()); | .replaceFirst('/s1', UserData().addProgramPrice.toString()); | ||||
} | } | ||||
return Container( | return Container( | ||||
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20), | |||||
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20), | |||||
child: Text( | child: Text( | ||||
str, | str, | ||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
@@ -1311,8 +1312,8 @@ class _AddProgramState extends State<AddProgram> { | |||||
var hopeObject = ''; | var hopeObject = ''; | ||||
lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f'); | lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f'); | ||||
String temp = ''; | |||||
String postTemp = ''; | |||||
String temp=''; | |||||
String postTemp=''; | |||||
imgUrlList.forEach((str) { | imgUrlList.forEach((str) { | ||||
temp += (temp == "" ? str : '|$str'); | temp += (temp == "" ? str : '|$str'); | ||||
postTemp += (postTemp == "" | postTemp += (postTemp == "" | ||||
@@ -691,6 +691,8 @@ class _DisCoverPageState extends State<DisCoverPage> | |||||
Widget _renderRow(int index, list, page) { | Widget _renderRow(int index, list, page) { | ||||
if (index < list.length) { | if (index < list.length) { | ||||
var userInfo = list[index]; | var userInfo = list[index]; | ||||
print('----------------------------------------------------'); | |||||
print(userInfo); | |||||
return UserCard( | return UserCard( | ||||
key: UniqueKey(), | key: UniqueKey(), | ||||
userName: Provider.of<RefNameProvider>(context) | userName: Provider.of<RefNameProvider>(context) | ||||
@@ -742,8 +742,7 @@ class _EditPageState extends State<EditPage> { | |||||
widget.isEditPage ? idItem : Container(), | widget.isEditPage ? idItem : Container(), | ||||
_buildDivider(), | _buildDivider(), | ||||
_bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out, | _bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out, | ||||
true, nickNameController, true, (str) => nickname = str, | |||||
inputFormatters: [LengthLimitingTextInputFormatter(20)]), | |||||
true, nickNameController, true, (str) => nickname = str), | |||||
_buildDivider(), | _buildDivider(), | ||||
_bottomBorderBox(I18n.of(context).country, country, false, null, | _bottomBorderBox(I18n.of(context).country, country, false, null, | ||||
countryId.length != 0, selectCountry), | countryId.length != 0, selectCountry), | ||||
@@ -24,6 +24,7 @@ import 'package:cached_network_image/cached_network_image.dart'; | |||||
import 'ProgramDetail.dart'; | import 'ProgramDetail.dart'; | ||||
class _ConversationItem extends StatelessWidget { | class _ConversationItem extends StatelessWidget { | ||||
const _ConversationItem( | const _ConversationItem( | ||||
{Key key, | {Key key, | ||||
@@ -349,8 +350,6 @@ class _ConversationItem extends StatelessWidget { | |||||
} | } | ||||
} | } | ||||
class InfoListPage extends StatefulWidget { | class InfoListPage extends StatefulWidget { | ||||
@required | @required | ||||
final String title; | final String title; | ||||
@@ -171,7 +171,8 @@ class _MyProgramPageState extends State<MyProgramPage> { | |||||
), | ), | ||||
centerTitle: true, | centerTitle: true, | ||||
leading: CustomUI.buildCustomLeading(context), | leading: CustomUI.buildCustomLeading(context), | ||||
elevation: 1, | |||||
elevation: 1, | |||||
actions: <Widget>[ | actions: <Widget>[ | ||||
isMyself | isMyself | ||||
? myPop.PopupMenuButton<String>( | ? myPop.PopupMenuButton<String>( | ||||
@@ -389,6 +389,9 @@ class _ProfilePageState extends State<ProfilePage> | |||||
data['sign'] = TokenMgr().getSign(data); | data['sign'] = TokenMgr().getSign(data); | ||||
Response res = await HttpUtil().post('user/personal/album', data: data); | Response res = await HttpUtil().post('user/personal/album', data: data); | ||||
if (res == null) { | |||||
return; | |||||
} | |||||
Map resData = res.data; | Map resData = res.data; | ||||
if (resData['code'] == 0) { | if (resData['code'] == 0) { | ||||
imgList = resData['data'] == null ? [] : resData['data']; | imgList = resData['data'] == null ? [] : resData['data']; | ||||
@@ -1087,8 +1090,9 @@ class _ProfilePageState extends State<ProfilePage> | |||||
top: 20, | top: 20, | ||||
child: InkWell( | child: InkWell( | ||||
onTap: () async { | onTap: () async { | ||||
if (!userInfo.isLike) { | if (!userInfo.isLike) { | ||||
HttpUtil().setLove(userInfo.userId, () { | |||||
HttpUtil().setLove(userInfo.userId, () { | |||||
MessageMgr().emit('refresh_love_list', | MessageMgr().emit('refresh_love_list', | ||||
{'UserId': userInfo.userId, 'flag': 0}); | {'UserId': userInfo.userId, 'flag': 0}); | ||||
setState(() { | setState(() { | ||||
@@ -1366,7 +1370,6 @@ class _ProfilePageState extends State<ProfilePage> | |||||
context, I18n.of(context).blacklist_choose, I18n.of(context).determine, | context, I18n.of(context).blacklist_choose, I18n.of(context).determine, | ||||
() async { | () async { | ||||
Navigator.pop(context); | Navigator.pop(context); | ||||
HttpUtil().blackUser(userInfo.userId, () { | HttpUtil().blackUser(userInfo.userId, () { | ||||
isblack = true; | isblack = true; | ||||
}); | }); | ||||
@@ -2087,8 +2090,7 @@ class _ProfilePageState extends State<ProfilePage> | |||||
description: I18n.of(context).recovery_photo, | description: I18n.of(context).recovery_photo, | ||||
showDivider: false, | showDivider: false, | ||||
showRightIcon: false, | showRightIcon: false, | ||||
onPressed: () async { | |||||
CustomUI.buildOneConfirm( | |||||
onPressed: () async {CustomUI.buildOneConfirm( | |||||
context, | context, | ||||
I18n.of(context).confrim_recovery, | I18n.of(context).confrim_recovery, | ||||
I18n.of(context).determine, () async { | I18n.of(context).determine, () async { | ||||
@@ -2318,7 +2320,7 @@ class _ProfilePageState extends State<ProfilePage> | |||||
), | ), | ||||
onTap: isblack | onTap: isblack | ||||
? () async { | ? () async { | ||||
HttpUtil().cancleBlackUser( | |||||
HttpUtil().cancleBlackUser( | |||||
userInfo.userId, () { | userInfo.userId, () { | ||||
Navigator.of(context).pop(); | Navigator.of(context).pop(); | ||||
isblack = false; | isblack = false; | ||||
@@ -2527,8 +2529,7 @@ class _ProfilePageState extends State<ProfilePage> | |||||
showToast(I18n.of(context).cantt_voice); | showToast(I18n.of(context).cantt_voice); | ||||
return; | return; | ||||
} | } | ||||
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) { | |||||
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) { | |||||
showToast(I18n.of(context).you_are_blaklisted); | showToast(I18n.of(context).you_are_blaklisted); | ||||
return; | return; | ||||
} | } | ||||
@@ -2537,7 +2538,6 @@ class _ProfilePageState extends State<ProfilePage> | |||||
showToast(I18n.of(context).reject_message); | showToast(I18n.of(context).reject_message); | ||||
return; | return; | ||||
} | } | ||||
//对方关闭陌生人消息,则提示 | //对方关闭陌生人消息,则提示 | ||||
if (!userInfo.isCanStrangerNews) { | if (!userInfo.isCanStrangerNews) { | ||||
showToast(I18n.of(context).stranger_close_tips); | showToast(I18n.of(context).stranger_close_tips); | ||||
@@ -119,7 +119,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> { | |||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
style: TextStyle(color: AppColors.NewAppbarTextColor), | style: TextStyle(color: AppColors.NewAppbarTextColor), | ||||
), | ), | ||||
elevation: 1, | |||||
elevation: 1, | |||||
leading: CustomUI.buildCustomLeading(context), | leading: CustomUI.buildCustomLeading(context), | ||||
centerTitle: true, | centerTitle: true, | ||||
); | ); | ||||
@@ -553,8 +553,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> { | |||||
list.add(button); | list.add(button); | ||||
} | } | ||||
return Container( | return Container( | ||||
padding: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10), | |||||
color: Colors.white, | |||||
margin: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10), | |||||
child: Column( | child: Column( | ||||
crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, | ||||
children: list, | children: list, | ||||
@@ -175,7 +175,7 @@ class _SearchPageState extends State<SearchPage> { | |||||
child: Stack( | child: Stack( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
SmartRefresher( | SmartRefresher( | ||||
enablePullDown: list.length > 0, | |||||
enablePullDown: list.length > 0, | |||||
enablePullUp: true, | enablePullUp: true, | ||||
header: MaterialClassicHeader(), | header: MaterialClassicHeader(), | ||||
footer: CustomUI.buildLoadingFooter(), | footer: CustomUI.buildLoadingFooter(), | ||||
@@ -510,7 +510,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> { | |||||
actions: <Widget>[ | actions: <Widget>[ | ||||
InkWell( | InkWell( | ||||
child: Padding( | child: Padding( | ||||
padding: EdgeInsets.only(right: 12, top: 14, bottom: 14), | |||||
padding: EdgeInsets.only(right: 15, top: 14, bottom: 14), | |||||
child: Consumer<GroupSelectProvider>( | child: Consumer<GroupSelectProvider>( | ||||
builder: (context, counter, child) => Container( | builder: (context, counter, child) => Container( | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
@@ -525,7 +525,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> { | |||||
? Colors.red | ? Colors.red | ||||
: const Color(0xFF3875E9)), | : const Color(0xFF3875E9)), | ||||
), | ), | ||||
padding: EdgeInsets.symmetric(horizontal: 10), | |||||
padding: EdgeInsets.symmetric(horizontal: 18), | |||||
alignment: Alignment.center, | alignment: Alignment.center, | ||||
child: fixedText( | child: fixedText( | ||||
(widget.pageType == | (widget.pageType == | ||||
@@ -526,8 +526,8 @@ class DailyBouusState extends State with SingleTickerProviderStateMixin { | |||||
height: 37, | height: 37, | ||||
child: Image.asset( | child: Image.asset( | ||||
R.assetsImagesImgFyj, | R.assetsImagesImgFyj, | ||||
width: needAnimate ? animation.value * 17 : 17, | |||||
height: needAnimate ? animation.value * 17 : 17, | |||||
width: needAnimate ? animation.value * 24 : 24, | |||||
height: needAnimate ? animation.value * 24 : 24, | |||||
), | ), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB), | color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB), | ||||
@@ -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 = | Response res = | ||||
await HttpUtil().post('friendship/newFriends/record', data: data); | await HttpUtil().post('friendship/newFriends/record', data: data); | ||||
if (res == null) { | |||||
return; | |||||
} | |||||
var resData = res.data; | var resData = res.data; | ||||
if (resData['code'] == 0) { | if (resData['code'] == 0) { | ||||
if (resData['data'] != null) { | if (resData['data'] != null) { | ||||
@@ -12,7 +12,7 @@ import 'package:chat/utils/LoadingDialog.dart'; | |||||
import 'package:chat/utils/MessageMgr.dart'; | import 'package:chat/utils/MessageMgr.dart'; | ||||
import 'package:chat/utils/TokenMgr.dart'; | import 'package:chat/utils/TokenMgr.dart'; | ||||
import 'package:chat/utils/app_navigator.dart'; | import 'package:chat/utils/app_navigator.dart'; | ||||
import 'package:chat/utils/file_transfer_page.dart'; | |||||
import 'package:chat/utils/file_preview_local.dart'; | |||||
import 'package:chat/utils/local_notification_util.dart'; | import 'package:chat/utils/local_notification_util.dart'; | ||||
import 'package:chat/utils/msgHandler.dart'; | import 'package:chat/utils/msgHandler.dart'; | ||||
import 'package:chat/utils/receive_share_file.dart'; | import 'package:chat/utils/receive_share_file.dart'; | ||||
@@ -256,7 +256,7 @@ class _HomeMainState extends State<HomeMain> { | |||||
Navigator.of(LoadingManage.context).push( | Navigator.of(LoadingManage.context).push( | ||||
new MaterialPageRoute( | new MaterialPageRoute( | ||||
builder: (context) { | builder: (context) { | ||||
return FileTransferPage(data); | |||||
return FilePreview(data); | |||||
}, | }, | ||||
), | ), | ||||
); | ); | ||||
@@ -41,8 +41,6 @@ class _LastChatItemState extends State<LastChatItem> { | |||||
lastMessageModel = widget.lastMessageModel; | lastMessageModel = widget.lastMessageModel; | ||||
initUserInfo(); | initUserInfo(); | ||||
// initUserInfo(); | |||||
// initUserInfo(); | |||||
MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo); | MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo); | ||||
} | } | ||||
@@ -162,22 +160,5 @@ class _LastChatItemState extends State<LastChatItem> { | |||||
enterType: widget.enterType, enterContent: widget.enterContent); | enterType: widget.enterType, enterContent: widget.enterContent); | ||||
}, | }, | ||||
); | ); | ||||
// FutureBuilder( | |||||
// future: _friendInfoFuture, | |||||
// builder: (BuildContext context, AsyncSnapshot snapshot) { | |||||
// if (snapshot.connectionState == ConnectionState.done) { | |||||
// if (snapshot.hasError) { | |||||
// return Container(); | |||||
// } else { | |||||
// UserInfo friendInfo = snapshot.data; | |||||
// if (friendInfo == null) { | |||||
// return Container(); | |||||
// } | |||||
// } else { | |||||
// return Container(); | |||||
// } | |||||
// }); | |||||
} | } | ||||
} | } |
@@ -17,7 +17,7 @@ import 'package:permission_handler/permission_handler.dart'; | |||||
class LastChatPage extends StatefulWidget { | class LastChatPage extends StatefulWidget { | ||||
final bool needRobot; | final bool needRobot; | ||||
final int enterType; // 0默认 1图片 | |||||
final int enterType; // 0默认 1图片 2转发消息 | |||||
final dynamic enterContent; | final dynamic enterContent; | ||||
LastChatPage({this.needRobot = true, this.enterType = 0, this.enterContent}); | LastChatPage({this.needRobot = true, this.enterType = 0, this.enterContent}); | ||||
@@ -89,7 +89,7 @@ class MyQr extends StatelessWidget { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
Row( | Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Container( | |||||
Container( | |||||
constraints: BoxConstraints(maxWidth: 170), | constraints: BoxConstraints(maxWidth: 170), | ||||
child: Text(name, | child: Text(name, | ||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
@@ -236,11 +236,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||||
I18n.onLocaleChanged = onLocaleChange; | I18n.onLocaleChanged = onLocaleChange; | ||||
WidgetsBinding.instance.addObserver(this); | WidgetsBinding.instance.addObserver(this); | ||||
ReceiveShareFile.init(); | ReceiveShareFile.init(); | ||||
ScreenShot.getFileStream(); | |||||
ScreenShot.getFileStream(); | |||||
} | } | ||||
isAvailableAppleSignIn() async { | isAvailableAppleSignIn() async { | ||||
@@ -294,9 +290,6 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||||
MessageMgr().emit( | MessageMgr().emit( | ||||
'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId); | 'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId); | ||||
} | } | ||||
break; | break; | ||||
case AppLifecycleState.paused: // 应用程序不可见,后台 | case AppLifecycleState.paused: // 应用程序不可见,后台 | ||||
print('切换到后台'); | print('切换到后台'); | ||||
@@ -219,7 +219,7 @@ class PayWayContentState extends State<PayWayContent> { | |||||
webPage: url, | webPage: url, | ||||
title: '点我代付[${widget.money}元]', | title: '点我代付[${widget.money}元]', | ||||
thumbnail: | thumbnail: | ||||
"http://datasm.chengyouhd.com/Upload/default/icon120.png", | |||||
"http://datasm.chengyouhd.com/Upload/default/icon120.png", | |||||
description: '[${UserData().basicInfo.nickName}]正在购买H币,点击帮我支付吧'); | description: '[${UserData().basicInfo.nickName}]正在购买H币,点击帮我支付吧'); | ||||
fluwx.share(model); | fluwx.share(model); | ||||
} | } | ||||
@@ -1109,27 +1109,23 @@ class CustomUI { | |||||
if (height == null) { | if (height == null) { | ||||
height = MediaQuery.of(context).size.height * 0.8; | height = MediaQuery.of(context).size.height * 0.8; | ||||
} | } | ||||
return InkWell( | |||||
onTap: null, | |||||
return Container( | |||||
width: MediaQuery.of(context).size.width, | |||||
height: height, | |||||
alignment: Alignment.topCenter, | |||||
child: Container( | child: Container( | ||||
width: MediaQuery.of(context).size.width, | |||||
height: height, | |||||
alignment: Alignment.topCenter, | |||||
child: Container( | |||||
width: 40, | |||||
height: 40, | |||||
margin: EdgeInsets.only(top: 20), | |||||
padding: EdgeInsets.all(10), | |||||
decoration: BoxDecoration( | |||||
shape: BoxShape.circle, | |||||
color: Colors.white, | |||||
boxShadow: [ | |||||
BoxShadow(blurRadius: 3.0, color: Colors.black26) | |||||
]), | |||||
child: new CircularProgressIndicator( | |||||
strokeWidth: 2, | |||||
), | |||||
))); | |||||
width: 40, | |||||
height: 40, | |||||
margin: EdgeInsets.only(top: 20), | |||||
padding: EdgeInsets.all(10), | |||||
decoration: BoxDecoration( | |||||
shape: BoxShape.circle, | |||||
color: Colors.white, | |||||
boxShadow: [BoxShadow(blurRadius: 3.0, color: Colors.black26)]), | |||||
child: new CircularProgressIndicator( | |||||
strokeWidth: 2, | |||||
), | |||||
)); | |||||
} | } | ||||
static Widget buildLoadingFooter() { | static Widget buildLoadingFooter() { | ||||
@@ -282,15 +282,13 @@ class HttpUtil { | |||||
print('用户信息resData $resData'); | print('用户信息resData $resData'); | ||||
if (resData['code'] == 0) { | if (resData['code'] == 0) { | ||||
var info = UserInfo.fromJson(resData['data']); | var info = UserInfo.fromJson(resData['data']); | ||||
info.isBlackened | |||||
info.isBlackened | |||||
? BlacklistMgr.addBlackListMe(info.userId) | ? BlacklistMgr.addBlackListMe(info.userId) | ||||
: BlacklistMgr.removeBalckListMe(info.userId); | : BlacklistMgr.removeBalckListMe(info.userId); | ||||
info.isBlackList | info.isBlackList | ||||
? BlacklistMgr.addMyBlackList(info.userId) | ? BlacklistMgr.addMyBlackList(info.userId) | ||||
: BlacklistMgr.removeMyBalckList(info.userId); | : BlacklistMgr.removeMyBalckList(info.userId); | ||||
friendCache[friendId] = info; | friendCache[friendId] = info; | ||||
FriendListMgr().updateFriendInfo(info); | FriendListMgr().updateFriendInfo(info); | ||||
UserInfoTable().insertUser(info); | UserInfoTable().insertUser(info); | ||||
@@ -353,7 +351,6 @@ class HttpUtil { | |||||
if (resData['code'] == 0) { | if (resData['code'] == 0) { | ||||
var info = UserInfo.fromJson(resData['data']); | var info = UserInfo.fromJson(resData['data']); | ||||
info.isBlackened | info.isBlackened | ||||
? BlacklistMgr.addBlackListMe(info.userId) | ? BlacklistMgr.addBlackListMe(info.userId) | ||||
: BlacklistMgr.removeBalckListMe(info.userId); | : BlacklistMgr.removeBalckListMe(info.userId); | ||||
@@ -361,7 +358,6 @@ class HttpUtil { | |||||
info.isBlackList | info.isBlackList | ||||
? BlacklistMgr.addMyBlackList(info.userId) | ? BlacklistMgr.addMyBlackList(info.userId) | ||||
: BlacklistMgr.removeMyBalckList(info.userId); | : BlacklistMgr.removeMyBalckList(info.userId); | ||||
FriendListMgr().updateFriendInfo(info); | FriendListMgr().updateFriendInfo(info); | ||||
friendCache[info.userId] = info; | friendCache[info.userId] = info; | ||||
MessageMgr().emit('UpdateUserInfo', info); | MessageMgr().emit('UpdateUserInfo', info); | ||||
@@ -1203,7 +1199,7 @@ class HttpUtil { | |||||
//根据经纬度获取用户国家城市 | //根据经纬度获取用户国家城市 | ||||
getAddress(double lon, double lat) async { | getAddress(double lon, double lat) async { | ||||
Map data = { | Map data = { | ||||
"lon": lon.toString(), | |||||
"lon": lon.toString(), | |||||
"lat": lat.toString(), | "lat": lat.toString(), | ||||
}; | }; | ||||
data['sign'] = TokenMgr().getSign(data); | data['sign'] = TokenMgr().getSign(data); | ||||
@@ -1244,12 +1240,12 @@ class HttpUtil { | |||||
} | } | ||||
} | } | ||||
//根据经纬度更新当前城市 | |||||
//根据经纬度获取用户国家城市 | |||||
changeCurrentCity(double lon, double lat, callback) async { | changeCurrentCity(double lon, double lat, callback) async { | ||||
if (UserData().basicInfo.userId == null) return; | if (UserData().basicInfo.userId == null) return; | ||||
Map data = { | Map data = { | ||||
"userId": UserData().basicInfo.userId, | "userId": UserData().basicInfo.userId, | ||||
"lon": lon.toString(), | |||||
"lon": lon.toString(), | |||||
"lat": lat.toString(), | "lat": lat.toString(), | ||||
}; | }; | ||||
data['sign'] = TokenMgr().getSign(data); | data['sign'] = TokenMgr().getSign(data); | ||||
@@ -1280,8 +1276,7 @@ class HttpUtil { | |||||
callback(resData['data']['UserId']); | callback(resData['data']['UserId']); | ||||
} | } | ||||
} | } | ||||
//拉黑用户 | |||||
//拉黑用户 | |||||
blackUser(int userId, callback) async { | blackUser(int userId, callback) async { | ||||
Map data = { | Map data = { | ||||
"userid": UserData().basicInfo.userId, | "userid": UserData().basicInfo.userId, | ||||
@@ -1354,7 +1349,6 @@ class HttpUtil { | |||||
callback(); | callback(); | ||||
} | } | ||||
} | } | ||||
//向企业服务助手提交信息 | //向企业服务助手提交信息 | ||||
Future<bool> commitInfoToCompany(MsgModel msgModel) async { | Future<bool> commitInfoToCompany(MsgModel msgModel) async { | ||||
Map data = { | Map data = { | ||||
@@ -85,7 +85,7 @@ class _MessageBoxState extends State<MessageBox> { | |||||
), | ), | ||||
); | ); | ||||
} else if (str == 'black') { | } else if (str == 'black') { | ||||
HttpUtil().blackUser(userId, () {}); | |||||
HttpUtil().blackUser(userId, () {}); | |||||
} else if (str == 'noContent') { | } else if (str == 'noContent') { | ||||
var data = { | var data = { | ||||
"userId": UserData().basicInfo.userId, | "userId": UserData().basicInfo.userId, | ||||
@@ -481,7 +481,7 @@ class _MessageBoxState extends State<MessageBox> { | |||||
_buildTimebox(data), | _buildTimebox(data), | ||||
_buildImgSet(data), | _buildImgSet(data), | ||||
_buildImgList(data), | _buildImgList(data), | ||||
widget.isDetail ? Container() : _buildDivder(), | |||||
widget.isDetail ? Container() : _buildDivder(), | |||||
_buildIconButtonList(data), | _buildIconButtonList(data), | ||||
//_buildContent(), | //_buildContent(), | ||||
], | ], | ||||
@@ -160,7 +160,7 @@ class NetWork { | |||||
loginTimer?.cancel(); | loginTimer?.cancel(); | ||||
MsgHandler.flushCacheMsg(); | MsgHandler.flushCacheMsg(); | ||||
UploadUtil().setUploadUrl(msgContent.httpAddr); | UploadUtil().setUploadUrl(msgContent.httpAddr); | ||||
GroupInfoMgr().checkGroupValid(); | |||||
GroupInfoMgr().checkGroupValid(); | |||||
} else { | } else { | ||||
_stateBloc.addState(ChatState.loginFailed); | _stateBloc.addState(ChatState.loginFailed); | ||||
print('登录失败${msgContent.errorCode}'); | print('登录失败${msgContent.errorCode}'); | ||||
@@ -323,7 +323,7 @@ class NetWork { | |||||
connectServerTimer?.cancel(); | connectServerTimer?.cancel(); | ||||
if (channel != null) { | if (channel != null) { | ||||
await channel.sink.close(); | |||||
await channel.sink.close(); | |||||
channel = null; | channel = null; | ||||
} | } | ||||
}); | }); | ||||
@@ -415,7 +415,7 @@ class NetWork { | |||||
//清缓存 | //清缓存 | ||||
ChatDataMgr().logout(); | ChatDataMgr().logout(); | ||||
MsgHandler.clear(); | MsgHandler.clear(); | ||||
isNormalClose = true; | isNormalClose = true; | ||||
close(); | close(); | ||||
} | } | ||||
@@ -37,29 +37,31 @@ class TempUserCard extends StatelessWidget { | |||||
TempUserCard( | TempUserCard( | ||||
{Key key, | {Key key, | ||||
this.userName, | |||||
this.isReal: false, | |||||
this.city, | |||||
this.age, | |||||
this.constellation, | |||||
this.professional, | |||||
this.isOnline, | |||||
this.distance, | |||||
this.userId, | |||||
this.isLove: false, | |||||
this.sex, | |||||
this.headUrl: '', | |||||
this.payImg: false, | |||||
this.imgNum: 0, | |||||
this.isHidden: false, | |||||
this.member: 0, | |||||
this.hiddenDistince: false, | |||||
this.nameSize = 8, | |||||
this.isBalck: false}) | |||||
this.userName, | |||||
this.isReal: false, | |||||
this.city, | |||||
this.age, | |||||
this.constellation, | |||||
this.professional, | |||||
this.isOnline, | |||||
this.distance, | |||||
this.userId, | |||||
this.isLove: false, | |||||
this.sex, | |||||
this.headUrl: '', | |||||
this.payImg: false, | |||||
this.imgNum: 0, | |||||
this.isHidden: false, | |||||
this.member: 0, | |||||
this.hiddenDistince: false, | |||||
this.nameSize = 8, | |||||
this.isBalck: false}) | |||||
: super(key: key); | : super(key: key); | ||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
bool isVIP = member > 0; | bool isVIP = member > 0; | ||||
bool isSVIP = member == 2; | bool isSVIP = member == 2; | ||||
@@ -69,27 +71,27 @@ class TempUserCard extends StatelessWidget { | |||||
return Stack( | return Stack( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Container( | Container( | ||||
height: height - 40, | |||||
width: height - 40, | |||||
height: height-40, | |||||
width: height-40, | |||||
child: ClipRRect( | child: ClipRRect( | ||||
borderRadius: BorderRadius.only( | borderRadius: BorderRadius.only( | ||||
topLeft: Radius.circular(15), | topLeft: Radius.circular(15), | ||||
topRight: Radius.circular(15)), | topRight: Radius.circular(15)), | ||||
child: headUrl == '' || headUrl == null | child: headUrl == '' || headUrl == null | ||||
? Image.asset( | ? Image.asset( | ||||
Constants.DefaultHeadImgUrl, | |||||
width: height - 40, | |||||
height: height - 40, | |||||
) | |||||
Constants.DefaultHeadImgUrl, | |||||
width: height-40, | |||||
height: height-40, | |||||
) | |||||
: CachedNetworkImage( | : CachedNetworkImage( | ||||
imageUrl: headUrl, | |||||
placeholder: (context, url) => Image.asset( | |||||
Constants.DefaultHeadImgUrl, | |||||
width: height - 40, | |||||
height: height - 40, | |||||
), | |||||
fit: BoxFit.cover, | |||||
)), | |||||
imageUrl: headUrl, | |||||
placeholder: (context, url) => Image.asset( | |||||
Constants.DefaultHeadImgUrl, | |||||
width: height-40, | |||||
height: height-40, | |||||
), | |||||
fit: BoxFit.cover, | |||||
)), | |||||
), | ), | ||||
Positioned( | Positioned( | ||||
left: 0, | left: 0, | ||||
@@ -99,15 +101,16 @@ class TempUserCard extends StatelessWidget { | |||||
width: 54, | width: 54, | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: Colors.black54, | color: Colors.black54, | ||||
borderRadius: | |||||
BorderRadius.only(topRight: Radius.circular(10))), | |||||
borderRadius: BorderRadius.only( | |||||
topRight: Radius.circular(10))), | |||||
child: Row( | child: Row( | ||||
//mainAxisAlignment: MainAxisAlignment.spaceEvenly, | //mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Padding( | Padding( | ||||
padding: EdgeInsets.only(left: 6), | padding: EdgeInsets.only(left: 6), | ||||
child: | child: | ||||
Icon(Icons.image, size: 15, color: Colors.white)), | |||||
Icon(Icons.image, size: 15, color: Colors.white)), | |||||
Padding( | Padding( | ||||
padding: EdgeInsets.only(left: 5, top: 2), | padding: EdgeInsets.only(left: 5, top: 2), | ||||
child: fixedText(imgNum.toString(), | child: fixedText(imgNum.toString(), | ||||
@@ -128,25 +131,87 @@ class TempUserCard extends StatelessWidget { | |||||
fontSize: 15), | fontSize: 15), | ||||
isReal && sex == 2 | isReal && sex == 2 | ||||
? Container( | ? Container( | ||||
margin: EdgeInsets.only(left: 5), | |||||
padding: | |||||
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5), | |||||
alignment: Alignment.center, | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(10), | |||||
color: Constants.PurpleBackgroundColor, | |||||
), | |||||
child: fixedText('Real', fontSize: 8, color: Colors.white)) | |||||
margin: EdgeInsets.only(left: 5), | |||||
padding: | |||||
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5), | |||||
alignment: Alignment.center, | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(10), | |||||
color: Constants.PurpleBackgroundColor, | |||||
), | |||||
child: fixedText('Real', fontSize: 8, color: Colors.white)) | |||||
: Container(), | : Container(), | ||||
isVIP && sex == 1 | isVIP && sex == 1 | ||||
? Container( | ? Container( | ||||
margin: EdgeInsets.only(left: 5), | |||||
child: isSVIP ? Constants.svipIcon : Constants.vipIcon) | |||||
margin: EdgeInsets.only(left: 5), | |||||
child: isSVIP ? Constants.svipIcon : Constants.vipIcon) | |||||
: Container(), | : Container(), | ||||
], | ], | ||||
); | ); | ||||
} | } | ||||
// void _selectValue(str) async { | |||||
// if (str == 'collection') { | |||||
// Map data = { | |||||
// "userid": UserData().basicInfo.userId, | |||||
// "type": 0, | |||||
// "followUserId": this.userId, | |||||
// }; | |||||
// data['sign'] = TokenMgr().getSign(data); | |||||
// Response res = await HttpUtil() | |||||
// .post('userfollow/follow/insert', data: data, isShowLoading: true); | |||||
// Map resData = res.data; | |||||
// if (resData['code'] == 0) { | |||||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 0}); | |||||
// showToast(resData['msg']); | |||||
// } | |||||
// } else if (str == 'cancleCollection') { | |||||
// Map data = { | |||||
// "userid": UserData().basicInfo.userId, | |||||
// "type": 0, | |||||
// "followUserId": this.userId, | |||||
// }; | |||||
// data['sign'] = TokenMgr().getSign(data); | |||||
// Response res = await HttpUtil() | |||||
// .post('userfollow/follow/cancel', data: data, isShowLoading: true); | |||||
// Map resData = res.data; | |||||
// if (resData['code'] == 0) { | |||||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2}); | |||||
// showToast(resData['msg']); | |||||
// } | |||||
// } else if (str == 'black') { | |||||
// Map data = { | |||||
// "userid": UserData().basicInfo.userId, | |||||
// "type": 1, | |||||
// "followUserId": this.userId, | |||||
// }; | |||||
// data['sign'] = TokenMgr().getSign(data); | |||||
// Response res = | |||||
// await HttpUtil().post('userfollow/follow/insert', data: data); | |||||
// Map resData = res.data; | |||||
// showToast(resData['msg']); | |||||
// if (resData['code'] == 0) { | |||||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 1}); | |||||
// } | |||||
// } else if (str == 'cancleBlack') { | |||||
// var data = { | |||||
// "userid": UserData().basicInfo.userId, | |||||
// "type": 1, | |||||
// "followUserId": this.userId, | |||||
// }; | |||||
// data['sign'] = TokenMgr().getSign(data); | |||||
// Response res = | |||||
// await HttpUtil().post('userfollow/follow/cancel', data: data); | |||||
// Map resData = res.data; | |||||
// showToast(resData['msg']); | |||||
// if (resData['code'] == 0) { | |||||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2}); | |||||
// } | |||||
// } | |||||
// } | |||||
//距离、在线以及相册 | //距离、在线以及相册 | ||||
Widget otherWidget() { | Widget otherWidget() { | ||||
var greyColor = const Color(0xFFB2B2B2); | var greyColor = const Color(0xFFB2B2B2); | ||||
@@ -157,8 +222,8 @@ class TempUserCard extends StatelessWidget { | |||||
title: hiddenDistince | title: hiddenDistince | ||||
? I18n.of(context).secrecy | ? I18n.of(context).secrecy | ||||
: (UserData().hasLocationPermission | : (UserData().hasLocationPermission | ||||
? WebData().getDistanceString(distance) | |||||
: I18n.of(context).unknown), | |||||
? WebData().getDistanceString(distance) | |||||
: I18n.of(context).unknown), | |||||
titleColor: greyColor, | titleColor: greyColor, | ||||
isDivider: true), | isDivider: true), | ||||
InfoTile( | InfoTile( | ||||
@@ -167,24 +232,24 @@ class TempUserCard extends StatelessWidget { | |||||
isDivider: payImg || isHidden), | isDivider: payImg || isHidden), | ||||
isHidden | isHidden | ||||
? InfoTile( | ? InfoTile( | ||||
icon: IconData(0xe645, fontFamily: 'iconfont'), | |||||
iconHeight: 22, | |||||
title: I18n.of(context).application_view, | |||||
titleColor: greyColor, | |||||
isDivider: false, | |||||
onTap: () { | |||||
print('click'); | |||||
}) | |||||
icon: IconData(0xe645, fontFamily: 'iconfont'), | |||||
iconHeight: 22, | |||||
title: I18n.of(context).application_view, | |||||
titleColor: greyColor, | |||||
isDivider: false, | |||||
onTap: () { | |||||
print('click'); | |||||
}) | |||||
: Container(), | : Container(), | ||||
payImg | payImg | ||||
? InfoTile( | ? InfoTile( | ||||
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily), | |||||
title: I18n.of(context).paid_photo, | |||||
titleColor: greyColor, | |||||
isDivider: false, | |||||
onTap: () { | |||||
print('click'); | |||||
}) | |||||
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily), | |||||
title: I18n.of(context).paid_photo, | |||||
titleColor: greyColor, | |||||
isDivider: false, | |||||
onTap: () { | |||||
print('click'); | |||||
}) | |||||
: Container(), | : Container(), | ||||
], | ], | ||||
); | ); | ||||
@@ -209,148 +274,125 @@ class TempUserCard extends StatelessWidget { | |||||
), | ), | ||||
); | ); | ||||
}, | }, | ||||
child: Container( | |||||
alignment: Alignment.center, | |||||
color: AppColors.NewAppbarBgColor, | |||||
width: Screen.width, | |||||
child: Container( | |||||
width: Screen.width - 40, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | |||||
SizedBox( | |||||
height: 23, | |||||
), | |||||
headImg(), | |||||
Container( | |||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.only( | |||||
bottomLeft: Radius.circular(15), | |||||
bottomRight: Radius.circular(15))), | |||||
child: Column( | |||||
children: <Widget>[ | |||||
Container( | |||||
//背景 | |||||
padding: EdgeInsets.only( | |||||
left: 15, right: 10, bottom: 14.5, top: 5), | |||||
child: Column( | |||||
children: <Widget>[ | |||||
Stack( | |||||
children: <Widget>[ | |||||
Row( | |||||
children: <Widget>[ | |||||
//头像图片 | |||||
//信息 | |||||
Container( | |||||
width: MediaQuery.of(context) | |||||
.size | |||||
.width - | |||||
104, | |||||
child: Column( | |||||
crossAxisAlignment: | |||||
CrossAxisAlignment.start, | |||||
mainAxisAlignment: | |||||
MainAxisAlignment.end, | |||||
children: <Widget>[ | |||||
nameState(), //名字以及状态 | |||||
//用户的信息标记 | |||||
Padding( | |||||
padding: | |||||
EdgeInsets.only(top: 9)), | |||||
TempUserChips( | |||||
city: city, | |||||
age: age, | |||||
constellation: constellation, | |||||
professional: professional), | |||||
Padding( | |||||
padding: | |||||
EdgeInsets.only(top: 4)), | |||||
otherWidget(), | |||||
], | |||||
)), | |||||
], | |||||
), | |||||
], | |||||
) | |||||
], | |||||
)), | |||||
SizedBox( | |||||
height: 5, | |||||
), | |||||
Container( | |||||
child: //赞 | |||||
sex == UserData().basicInfo.sex | |||||
? InkWell( | |||||
onTap: () { | |||||
showToast(UserData().isMan() | |||||
? I18n.of(context).not_love | |||||
: I18n.of(context).not_love2); | |||||
}, | |||||
child: Container( | |||||
width: 100, | |||||
height: 30, | |||||
decoration: BoxDecoration( | |||||
border: Border.all( | |||||
color: Color(0xFF878787), | |||||
width: 1), | |||||
borderRadius: | |||||
BorderRadius.circular(16)), | |||||
padding: EdgeInsets.only( | |||||
left: 15, | |||||
right: 15, | |||||
bottom: 5, | |||||
top: 5), | |||||
child: Row( | |||||
mainAxisAlignment: | |||||
MainAxisAlignment.center, | |||||
children: <Widget>[ | |||||
Icon( | |||||
IconData( | |||||
0xe625, | |||||
fontFamily: | |||||
Constants.IconFontFamily, | |||||
), | |||||
size: 15, | |||||
color: Color(0xffB2B2B2), | |||||
), | |||||
SizedBox( | |||||
width: 5, | |||||
), | |||||
Text( | |||||
'LOVE', | |||||
style: prefix0.TextStyle( | |||||
color: Color(0xffB2B2B2)), | |||||
) | |||||
], | |||||
))) | |||||
: LoveToggle( | |||||
isActive: isLove, | |||||
onTap: (bool isActive) async { | |||||
if (isActive) { | |||||
HttpUtil().setLove(userId, () { | |||||
MessageMgr().emit('refresh_love_list', | |||||
{'UserId': userId, 'flag': 0}); | |||||
}); | |||||
} else { | |||||
HttpUtil().cancleLove(userId, () { | |||||
MessageMgr().emit('refresh_love_list', | |||||
{'UserId': userId, 'flag': 2}); | |||||
}); | |||||
} | |||||
}), | |||||
), | |||||
SizedBox( | |||||
height: 15, | |||||
), | |||||
], | |||||
), | |||||
), | |||||
], | |||||
), | |||||
), | |||||
)); | |||||
child: Container(alignment: Alignment.center,color: AppColors.NewAppbarBgColor,width: Screen.width,child: Container(width: Screen.width-40,child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | |||||
SizedBox(height: 23,), | |||||
headImg(), | |||||
Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.only( | |||||
bottomLeft: Radius.circular(15), | |||||
bottomRight: Radius.circular(15))) ,child: Column(children: <Widget>[ | |||||
Container( | |||||
//背景 | |||||
padding: EdgeInsets.only(left: 15,right: 10, bottom: 14.5,top: 5), | |||||
child: Column(children: <Widget>[ | |||||
Stack( | |||||
children: <Widget>[ | |||||
Row( | |||||
children: <Widget>[ | |||||
//头像图片 | |||||
//信息 | |||||
Container( | |||||
width: MediaQuery.of(context).size.width - 104, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
mainAxisAlignment: MainAxisAlignment.end, | |||||
children: <Widget>[ | |||||
nameState(), //名字以及状态 | |||||
//用户的信息标记 | |||||
Padding(padding: EdgeInsets.only(top: 9)), | |||||
TempUserChips( | |||||
city: city, | |||||
age: age, | |||||
constellation: constellation, | |||||
professional: professional), | |||||
Padding(padding: EdgeInsets.only(top: 4)), | |||||
otherWidget(), | |||||
], | |||||
)), | |||||
], | |||||
), | |||||
], | |||||
) | |||||
],)), | |||||
SizedBox(height: 5,), | |||||
Container( | |||||
child: //赞 | |||||
sex == UserData().basicInfo.sex | |||||
? InkWell( | |||||
onTap: () { | |||||
showToast(UserData().isMan() | |||||
? I18n.of(context).not_love | |||||
: I18n.of(context).not_love2); | |||||
}, | |||||
child: Container( | |||||
width: 100, | |||||
height: 30, | |||||
decoration: BoxDecoration(border: Border.all(color: Color(0xFF878787), width: 1),borderRadius: BorderRadius.circular(16)) , | |||||
padding: EdgeInsets.only( | |||||
left: 15, right: 15, bottom: 5,top: 5 ), | |||||
child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ | |||||
Icon( | |||||
IconData( | |||||
0xe625, | |||||
fontFamily: Constants.IconFontFamily, | |||||
), | |||||
size: 15, | |||||
color: Color(0xffB2B2B2), | |||||
), | |||||
SizedBox(width: 5,), | |||||
Text('LOVE',style: prefix0.TextStyle(color: Color(0xffB2B2B2)),) | |||||
],))) | |||||
: LoveToggle(isActive: isLove,onTap: (bool isActive) async { | |||||
Map data = { | |||||
"userid": UserData().basicInfo.userId, | |||||
"type": 0, | |||||
"followUserId": this.userId, | |||||
}; | |||||
data['sign'] = TokenMgr().getSign(data); | |||||
if (isActive) { | |||||
Response res = await HttpUtil().post( | |||||
'userfollow/follow/insert', | |||||
data: data, | |||||
isShowLoading: true); | |||||
Map resData = res.data; | |||||
showToast(resData['msg']); | |||||
if (resData['code'] == 0) { | |||||
MessageMgr().emit('refresh_love_list', | |||||
{'UserId': userId, 'flag': 0}); | |||||
showToast(resData['msg']); | |||||
} | |||||
} else { | |||||
Response res = await HttpUtil().post( | |||||
'userfollow/follow/cancel', | |||||
data: data, | |||||
isShowLoading: true); | |||||
Map resData = res.data; | |||||
if (resData['code'] == 0) { | |||||
MessageMgr().emit('refresh_love_list', | |||||
{'UserId': userId, 'flag': 2}); | |||||
showToast(resData['msg']); | |||||
} | |||||
} | |||||
}), | |||||
), | |||||
SizedBox(height: 15,), | |||||
],),), | |||||
], | |||||
),),)); | |||||
} | } | ||||
} | } | ||||
@@ -367,12 +409,12 @@ class InfoTile extends StatelessWidget { | |||||
const InfoTile( | const InfoTile( | ||||
{Key key, | {Key key, | ||||
this.title, | |||||
this.titleColor, | |||||
this.icon, | |||||
this.onTap, | |||||
this.iconHeight: TileHeight, | |||||
this.isDivider = false}) | |||||
this.title, | |||||
this.titleColor, | |||||
this.icon, | |||||
this.onTap, | |||||
this.iconHeight: TileHeight, | |||||
this.isDivider = false}) | |||||
: super(key: key); | : super(key: key); | ||||
@override | @override | ||||
@@ -276,13 +276,14 @@ class UserCard extends StatelessWidget { | |||||
isActive: isLove, | isActive: isLove, | ||||
size: 16, | size: 16, | ||||
onTap: (bool isActive) async { | onTap: (bool isActive) async { | ||||
if (isActive) { | if (isActive) { | ||||
HttpUtil().setLove(userId, () { | |||||
HttpUtil().setLove(userId, () { | |||||
MessageMgr().emit('refresh_love_list', | MessageMgr().emit('refresh_love_list', | ||||
{'UserId': userId, 'flag': 0}); | {'UserId': userId, 'flag': 0}); | ||||
}); | }); | ||||
} else { | } else { | ||||
HttpUtil().cancleLove(userId, () { | |||||
HttpUtil().cancleLove(userId, () { | |||||
MessageMgr().emit('refresh_love_list', | MessageMgr().emit('refresh_love_list', | ||||
{'UserId': userId, 'flag': 2}); | {'UserId': userId, 'flag': 2}); | ||||
}); | }); | ||||
@@ -342,7 +343,7 @@ class InfoTile extends StatelessWidget { | |||||
Container( | Container( | ||||
alignment: Alignment.bottomCenter, | alignment: Alignment.bottomCenter, | ||||
constraints: BoxConstraints(minHeight: 17), | constraints: BoxConstraints(minHeight: 17), | ||||
padding: EdgeInsets.only(right: 5, bottom: 1.5), | |||||
padding: EdgeInsets.only(right: 5,bottom: 1.5), | |||||
child: Text(title, | child: Text(title, | ||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
style: TextStyle( | style: TextStyle( | ||||
@@ -10,6 +10,7 @@ import 'package:chat/home/ProfilePage.dart'; | |||||
import 'package:chat/home/SearchPage.dart'; | import 'package:chat/home/SearchPage.dart'; | ||||
import 'package:chat/home/audio_chat_view.dart'; | import 'package:chat/home/audio_chat_view.dart'; | ||||
import 'package:chat/home/create_group_view.dart'; | import 'package:chat/home/create_group_view.dart'; | ||||
import 'package:chat/home/forward_view.dart'; | |||||
import 'package:chat/home/group_all_member.dart'; | import 'package:chat/home/group_all_member.dart'; | ||||
import 'package:chat/home/group_qr_view.dart'; | import 'package:chat/home/group_qr_view.dart'; | ||||
import 'package:chat/home/homeMain.dart'; | import 'package:chat/home/homeMain.dart'; | ||||
@@ -99,23 +100,36 @@ class AppNavigator { | |||||
} | } | ||||
//聊天 | //聊天 | ||||
static pushChatPage(BuildContext context, int friendId,{enterType=0,enterContent}) async { | |||||
if(enterType==1){ | |||||
static pushChatPage(BuildContext context, int friendId, | |||||
{enterType = 0, enterContent}) async { | |||||
if (enterType == 1) { | |||||
Navigator.of(context).pop(context); | Navigator.of(context).pop(context); | ||||
} | } | ||||
AppNavigator.push(context, ChatPage(key: Key('Chat'), friendId: friendId,enterType: enterType,enterContent: enterContent,)); | |||||
AppNavigator.push( | |||||
context, | |||||
ChatPage( | |||||
key: Key('Chat'), | |||||
friendId: friendId, | |||||
enterType: enterType, | |||||
enterContent: enterContent, | |||||
)); | |||||
} | } | ||||
//群聊 | //群聊 | ||||
static pushGroupChatPage( | |||||
BuildContext context, GroupInfoModel groupInfoModel,{enterType=0,enterContent}) async { | |||||
if(enterType==1){ | |||||
static pushGroupChatPage(BuildContext context, GroupInfoModel groupInfoModel, | |||||
{enterType = 0, enterContent}) async { | |||||
if (enterType == 1) { | |||||
Navigator.of(context).pop(context); | Navigator.of(context).pop(context); | ||||
} | } | ||||
AppNavigator.defaultPush(context, | |||||
GroupChatPage(key: Key('GroupChat'), groupInfoModel: groupInfoModel,enterType: enterType,enterContent: enterContent,)); | |||||
AppNavigator.defaultPush( | |||||
context, | |||||
GroupChatPage( | |||||
key: Key('GroupChat'), | |||||
groupInfoModel: groupInfoModel, | |||||
enterType: enterType, | |||||
enterContent: enterContent, | |||||
)); | |||||
} | } | ||||
//客服 | //客服 | ||||
@@ -129,7 +143,7 @@ class AppNavigator { | |||||
} | } | ||||
//群聊二维码 | //群聊二维码 | ||||
static pushGroupQrPage(BuildContext context,GroupInfoModel model) { | |||||
static pushGroupQrPage(BuildContext context, GroupInfoModel model) { | |||||
AppNavigator.push(context, GroupQrPage(model)); | AppNavigator.push(context, GroupQrPage(model)); | ||||
} | } | ||||
@@ -205,7 +219,7 @@ class AppNavigator { | |||||
AppNavigator.push(context, TranslateRobotPage()); | AppNavigator.push(context, TranslateRobotPage()); | ||||
} | } | ||||
//进入反馈小助手页面 | |||||
//进入反馈小助手页面 | |||||
static pushCompanyServerPage(BuildContext context) { | static pushCompanyServerPage(BuildContext context) { | ||||
AppNavigator.push(context, CompanyServerPage()); | AppNavigator.push(context, CompanyServerPage()); | ||||
} | } | ||||
@@ -215,5 +229,10 @@ class AppNavigator { | |||||
BuildContext context, List<FriendModel> friendList) { | BuildContext context, List<FriendModel> friendList) { | ||||
AppNavigator.push( | AppNavigator.push( | ||||
context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null)); | context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null)); | ||||
} | |||||
//发起群聊界面 | |||||
static pushForwardPage(BuildContext context, MsgModel msg) { | |||||
AppNavigator.push(context, ForwardPage(msg)); | |||||
} | } | ||||
} | } |
@@ -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'); | print('消息包大小超过3M'); | ||||
} | } | ||||
//本地文件为空或者等发送成功之后才可以发送 | |||||
if (msg.localFile == null || msg.state >= MsgState.Uploaded) { | if (msg.localFile == null || msg.state >= MsgState.Uploaded) { | ||||
Future.delayed(Duration(seconds: 60), () { | Future.delayed(Duration(seconds: 60), () { | ||||
if (msg.state != MsgState.SendingSuccess) { | if (msg.state != MsgState.SendingSuccess) { | ||||
@@ -239,6 +240,7 @@ class MsgHandler { | |||||
seq.targetId = curActiveSession; | seq.targetId = curActiveSession; | ||||
if (curActiveSession == 10000) { | if (curActiveSession == 10000) { | ||||
seq.channelType = ChatChannelType.CSD; | seq.channelType = ChatChannelType.CSD; | ||||
} else { | } else { | ||||
seq.channelType = | seq.channelType = | ||||
@@ -527,7 +529,12 @@ class MsgHandler { | |||||
msgModel.state = MsgState.DownloadFailed; | msgModel.state = MsgState.DownloadFailed; | ||||
} | } | ||||
} | } | ||||
if (msgModel.sessionId == 10000 ) { | |||||
print('收到反馈小助手消息'); | |||||
} | |||||
if (msgModel.sessionId == curActiveSession) { | if (msgModel.sessionId == curActiveSession) { | ||||
MessageMgr().emit('New Chat Message', msgModel.sessionId); | MessageMgr().emit('New Chat Message', msgModel.sessionId); | ||||
} | } | ||||
} | } | ||||
@@ -918,7 +925,7 @@ class MsgHandler { | |||||
NetWork().singOut(); | NetWork().singOut(); | ||||
UserData().reset(); | UserData().reset(); | ||||
break; | break; | ||||
case 'blacklist': | |||||
case 'blacklist': | |||||
String messageJson = map['message']; | String messageJson = map['message']; | ||||
Map messageMap = json.decode(messageJson); | Map messageMap = json.decode(messageJson); | ||||
if (messageMap['Status'] == 0) { | if (messageMap['Status'] == 0) { | ||||
@@ -9,6 +9,8 @@ class ReceiveShareFile { | |||||
static List<SharedMediaFile> _sharedFiles; | static List<SharedMediaFile> _sharedFiles; | ||||
static String tempFilePath; | static String tempFilePath; | ||||
static int mLastClickTime = 0; | |||||
static final int TIME_INTERVAL = 3000; | |||||
static void init() { | static void init() { | ||||
// For sharing images coming from outside the app while the app is in the memory | // For sharing images coming from outside the app while the app is in the memory | ||||
@@ -21,8 +23,12 @@ class ReceiveShareFile { | |||||
// print('#### getfilePath ${value[0].path}'); | // print('#### getfilePath ${value[0].path}'); | ||||
if (currentIndex == 1) { | if (currentIndex == 1) { | ||||
if (value != null && value.length > 0) { | |||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||||
int nowTime = DateTime.now().millisecondsSinceEpoch; | |||||
if (nowTime - mLastClickTime > TIME_INTERVAL) { | |||||
if (value != null && value.length > 0) { | |||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||||
} | |||||
} | } | ||||
} else { | } else { | ||||
// print("### 记录下来了1"); | // print("### 记录下来了1"); | ||||
@@ -44,9 +50,14 @@ class ReceiveShareFile { | |||||
// print('#### getfilePath ${value[0].path}'); | // print('#### getfilePath ${value[0].path}'); | ||||
if (currentIndex == 1) { | if (currentIndex == 1) { | ||||
if (value != null && value.length > 0) { | |||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||||
} | |||||
int nowTime = DateTime.now().millisecondsSinceEpoch; | |||||
if (nowTime - mLastClickTime > TIME_INTERVAL) { | |||||
// do something | |||||
if (value != null && value.length > 0) { | |||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||||
mLastClickTime = nowTime; | |||||
} | |||||
} else {} | |||||
} else { | } else { | ||||
// print("### 记录下来了"); | // print("### 记录下来了"); | ||||
if (value != null && value.length > 0) { | if (value != null && value.length > 0) { | ||||
@@ -58,9 +69,11 @@ class ReceiveShareFile { | |||||
// For sharing or opening urls/text coming from outside the app while the app is in the memory | // For sharing or opening urls/text coming from outside the app while the app is in the memory | ||||
_intentDataStreamSubscription = | _intentDataStreamSubscription = | ||||
ReceiveSharingIntent.getTextStream().listen((String value) { | ReceiveSharingIntent.getTextStream().listen((String value) { | ||||
print('#### getfilePath dddd $value '); | |||||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value); | |||||
print('#### getfilePath $value '); | |||||
// setState(() { | |||||
// _sharedText = value; | |||||
// print("Shared: $_sharedText"); | |||||
// }); | |||||
}, onError: (err) { | }, onError: (err) { | ||||
print("getLinkStream error: $err"); | print("getLinkStream error: $err"); | ||||
}); | }); | ||||
@@ -63,12 +63,12 @@ fixedText(data, {Color color, double fontSize, FontWeight fontWeight}) { | |||||
extendedText(String text, | extendedText(String text, | ||||
{Color color = Colors.blue, | {Color color = Colors.blue, | ||||
double fontSize = 14, | |||||
selectionEnabled = false, | |||||
double emojisize = 20.0, | |||||
Function hideKeyboard, | |||||
fontWeight,int maxLines, | |||||
Function onSpecialTextTap | |||||
double fontSize = 14, | |||||
selectionEnabled = false, | |||||
double emojisize = 20.0, | |||||
Function hideKeyboard, | |||||
fontWeight,int maxLines, | |||||
Function onSpecialTextTap | |||||
}) { | }) { | ||||
return ExtendedText( | return ExtendedText( | ||||
text, | text, | ||||
@@ -1,20 +1,16 @@ | |||||
import 'dart:io'; | |||||
import 'dart:typed_data'; | import 'dart:typed_data'; | ||||
import 'dart:io'; | |||||
import 'package:chat/map/location_result.dart'; | import 'package:chat/map/location_result.dart'; | ||||
import 'package:chat/utils/screen.dart'; | import 'package:chat/utils/screen.dart'; | ||||
import 'package:flutter/services.dart'; | import 'package:flutter/services.dart'; | ||||
import 'package:flutter_image_compress/flutter_image_compress.dart'; | import 'package:flutter_image_compress/flutter_image_compress.dart'; | ||||
import 'MessageMgr.dart'; | import 'MessageMgr.dart'; | ||||
class ScreenShot { | class ScreenShot { | ||||
static const MethodChannel _channel = | static const MethodChannel _channel = | ||||
const MethodChannel('make.photo.screen.hibok'); | const MethodChannel('make.photo.screen.hibok'); | ||||
static const EventChannel eventChannel = | |||||
static const EventChannel eventChannel = | |||||
const EventChannel('com.file.hibok'); | const EventChannel('com.file.hibok'); | ||||
static Future<List<int>> takeScreenshotImage() async { | static Future<List<int>> takeScreenshotImage() async { | ||||
Map<String, dynamic> args = <String, dynamic>{}; | Map<String, dynamic> args = <String, dynamic>{}; | ||||
Uint8List bytes = await _channel.invokeMethod('makePhotoScreen', args); | Uint8List bytes = await _channel.invokeMethod('makePhotoScreen', args); | ||||
@@ -45,7 +41,6 @@ class ScreenShot { | |||||
return _channel.invokeMethod('isSupportGoogle', args); | return _channel.invokeMethod('isSupportGoogle', args); | ||||
} | } | ||||
static getFileStream() { | static getFileStream() { | ||||
eventChannel.receiveBroadcastStream().listen((Object agrs){ | eventChannel.receiveBroadcastStream().listen((Object agrs){ | ||||
print('######## receiveBroadcastStream $agrs'); | print('######## receiveBroadcastStream $agrs'); | ||||