@@ -56,9 +56,9 @@ android { | |||||
// manifestPlaceholders = [ | // manifestPlaceholders = [ | ||||
// AMAP_KEY : "1fd4e93e3b4b13747da41f484c955fe2", /// 高德地图key | // AMAP_KEY : "1fd4e93e3b4b13747da41f484c955fe2", /// 高德地图key | ||||
// ] | // ] | ||||
ndk { | |||||
abiFilters 'armeabi-v7a' | |||||
} | |||||
// ndk { | |||||
// abiFilters 'armeabi-v7a' | |||||
// } | |||||
multiDexEnabled true | multiDexEnabled true | ||||
manifestPlaceholders = [ | manifestPlaceholders = [ | ||||
JPUSH_PKGNAME : 'com.cyhd.henhoandroid', | JPUSH_PKGNAME : 'com.cyhd.henhoandroid', | ||||
@@ -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), | ||||
@@ -3,7 +3,6 @@ import 'package:chat/data/WebData.dart'; | |||||
import 'package:chat/generated/i18n.dart'; | import 'package:chat/generated/i18n.dart'; | ||||
import 'package:chat/home/ProfilePage.dart'; | import 'package:chat/home/ProfilePage.dart'; | ||||
import 'package:chat/home/rich_title.dart'; | import 'package:chat/home/rich_title.dart'; | ||||
import 'package:chat/models/ref_name_provider.dart'; | |||||
import 'package:chat/utils/CustomUI.dart'; | import 'package:chat/utils/CustomUI.dart'; | ||||
import 'package:chat/utils/HttpUtil.dart'; | import 'package:chat/utils/HttpUtil.dart'; | ||||
import 'package:chat/utils/MessageMgr.dart'; | import 'package:chat/utils/MessageMgr.dart'; | ||||
@@ -18,7 +17,6 @@ import 'package:flutter/material.dart'; | |||||
import 'package:flutter/services.dart'; | import 'package:flutter/services.dart'; | ||||
import 'package:oktoast/oktoast.dart'; | import 'package:oktoast/oktoast.dart'; | ||||
import 'package:provider/provider.dart'; | |||||
import 'package:pull_to_refresh/pull_to_refresh.dart'; | import 'package:pull_to_refresh/pull_to_refresh.dart'; | ||||
import 'package:url_launcher/url_launcher.dart'; | import 'package:url_launcher/url_launcher.dart'; | ||||
import '../data/constants.dart' show AppColors, Constants; | import '../data/constants.dart' show AppColors, Constants; | ||||
@@ -27,6 +25,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, | ||||
@@ -352,8 +351,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>( | ||||
@@ -1,6 +1,5 @@ | |||||
import 'dart:convert'; | import 'dart:convert'; | ||||
import 'dart:io'; | import 'dart:io'; | ||||
import 'package:chat/home/InfoList.dart'; | |||||
import 'package:chat/home/fans_page.dart'; | import 'package:chat/home/fans_page.dart'; | ||||
import 'package:chat/home/goddess_hot.dart'; | import 'package:chat/home/goddess_hot.dart'; | ||||
import 'package:chat/home/rich_title.dart'; | import 'package:chat/home/rich_title.dart'; | ||||
@@ -449,6 +448,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']; | ||||
@@ -1147,8 +1149,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(() { | ||||
@@ -1426,7 +1429,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; | ||||
}); | }); | ||||
@@ -2147,8 +2149,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 { | ||||
@@ -2434,7 +2435,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; | ||||
@@ -2654,8 +2655,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; | ||||
} | } | ||||
@@ -2664,7 +2664,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), | ||||
@@ -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}); | ||||
@@ -6,7 +6,6 @@ import 'package:chat/data/WebData.dart'; | |||||
import 'package:chat/data/constants.dart'; | import 'package:chat/data/constants.dart'; | ||||
import 'package:chat/data/conversation.dart'; | import 'package:chat/data/conversation.dart'; | ||||
import 'package:chat/generated/i18n.dart'; | import 'package:chat/generated/i18n.dart'; | ||||
import 'package:chat/home/InfoList.dart'; | |||||
import 'package:chat/home/ProfilePage.dart'; | import 'package:chat/home/ProfilePage.dart'; | ||||
import 'package:chat/home/rich_title.dart'; | import 'package:chat/home/rich_title.dart'; | ||||
import 'package:chat/utils/CustomUI.dart'; | import 'package:chat/utils/CustomUI.dart'; | ||||
@@ -89,7 +89,7 @@ class MyQr extends StatelessWidget { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
Row( | Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Container( | |||||
Container( | |||||
constraints: BoxConstraints(maxWidth: 170), | constraints: BoxConstraints(maxWidth: 170), | ||||
child: Text(name, | child: Text(name, | ||||
textScaleFactor: 1.0, | textScaleFactor: 1.0, | ||||
@@ -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(), | ||||
], | ], | ||||
@@ -61,11 +61,9 @@ class NetWork { | |||||
Timer heartTimer; | Timer heartTimer; | ||||
Timer sendTimer; | Timer sendTimer; | ||||
Timer connectServerTimer; //尝试连接服务器 | Timer connectServerTimer; //尝试连接服务器 | ||||
Timer loginTimer; //登录 | |||||
Timer loginTimer; //登录计时器 | |||||
// 计时器 | // 计时器 | ||||
Timer iosBgTimer; //登录计时器 | Timer iosBgTimer; //登录计时器 | ||||
bool isInit = false; | bool isInit = false; | ||||
String host; | String host; | ||||
@@ -82,6 +80,9 @@ class NetWork { | |||||
HttpUtil().post('/service/config', data: data).then((res) { | HttpUtil().post('/service/config', data: data).then((res) { | ||||
print('获取聊天服务器地址成功'); | print('获取聊天服务器地址成功'); | ||||
res = json.decode(res.toString()); | res = json.decode(res.toString()); | ||||
if (res == null) { | |||||
return; | |||||
} | |||||
if (res['code'] == 0) { | if (res['code'] == 0) { | ||||
var config = res['data'][0]; | var config = res['data'][0]; | ||||
@@ -304,43 +305,37 @@ class NetWork { | |||||
} | } | ||||
reallySingOut() { | |||||
print('用户登出'); | |||||
//清缓存 | |||||
reallyClose() { | |||||
isNormalClose = true; | |||||
reallyClose(); | |||||
} | |||||
if(iosBgTimer==null){ | |||||
debugPrint('#### ios bg 没有计时器--计时器你启动'); | |||||
iosBgTimer = Timer(Duration(seconds: 20), () async{ | |||||
debugPrint('#### ios bg ios后台关闭socket连接'); | |||||
isNormalClose=true; | |||||
isConnecting = false; | |||||
isConnect = false; | |||||
isLogin = false; | |||||
heartOutCount = 0; | |||||
sendTimer?.cancel(); | |||||
heartTimer?.cancel(); | |||||
reallyClose() async{ | |||||
print('清除连接状态'); | |||||
isNormalClose=true; | |||||
isConnecting = false; | |||||
isConnect = false; | |||||
isLogin = false; | |||||
heartOutCount = 0; | |||||
sendTimer?.cancel(); | |||||
heartTimer?.cancel(); | |||||
loginTimer?.cancel(); | |||||
connectServerTimer?.cancel(); | |||||
loginTimer?.cancel(); | |||||
print('清除计时器'); | |||||
connectServerTimer?.cancel(); | |||||
if (channel != null) { | |||||
await channel.sink.close(); | |||||
channel = null; | |||||
} | |||||
}); | |||||
}else{ | |||||
debugPrint('#### ios bg 已有计时器'); | |||||
if (channel != null) { | |||||
var result = await channel.sink.close(); | |||||
print('result: $result'); | |||||
channel = null; | |||||
} | } | ||||
} | } | ||||
checkConnect() { | checkConnect() { | ||||
debugPrint(' ios bg 取消计时器'); | |||||
iosBgTimer?.cancel(); | |||||
if (isInit && !isConnect && !isConnecting) { | if (isInit && !isConnect && !isConnecting) { | ||||
reconnect(); | reconnect(); | ||||
} else { | } else { | ||||
@@ -38,29 +38,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; | ||||
@@ -70,27 +72,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, | ||||
@@ -100,15 +102,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(), | ||||
@@ -129,25 +132,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); | ||||
@@ -158,8 +223,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( | ||||
@@ -168,24 +233,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(), | ||||
], | ], | ||||
); | ); | ||||
@@ -210,148 +275,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,), | |||||
],),), | |||||
], | |||||
),),)); | |||||
} | } | ||||
} | } | ||||
@@ -368,12 +410,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 | ||||
@@ -277,13 +277,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}); | ||||
}); | }); | ||||
@@ -343,7 +344,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)); | |||||
} | } | ||||
} | } |
@@ -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"); | ||||
}); | }); | ||||
@@ -91,8 +91,3 @@ setStatusBar(){ | |||||
systemNavigationBarColor: Colors.white, | systemNavigationBarColor: Colors.white, | ||||
systemNavigationBarIconBrightness: Brightness.dark)); | systemNavigationBarIconBrightness: Brightness.dark)); | ||||
} | } | ||||
debugPrint(dynamic msg){ | |||||
print('###${DateTime.now()}####### '+msg); | |||||
} |
@@ -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'); | ||||