瀏覽代碼

修复bug

1.涉黄图上传上来,显示空白,发表后动态看不到这条消息
2.发布的图片点开不要默认放大,参考微信比例正常就可以了
通讯录、新朋友界面调整和增加添加好友界面
master
ZCM 5 年之前
父節點
當前提交
7ce53c2828
共有 12 個檔案被更改,包括 362 行新增152 行删除
  1. +3
    -3
      android/app/build.gradle
  2. 二進制
      assets/fonts/iconfont.ttf
  3. +1
    -1
      i18n/vi-VN.json
  4. +1
    -0
      lib/home/AddProgram.dart
  5. +0
    -1
      lib/home/Myprogram.dart
  6. +1
    -4
      lib/home/ProfilePage.dart
  7. +40
    -86
      lib/home/friend_page.dart
  8. +27
    -24
      lib/home/my_qr.dart
  9. +194
    -0
      lib/home/new_addfriends.dart
  10. +90
    -4
      lib/home/new_friends.dart
  11. +3
    -27
      lib/utils/HttpUtil.dart
  12. +2
    -2
      lib/utils/PicSwiper.dart

+ 3
- 3
android/app/build.gradle 查看文件

@@ -56,9 +56,9 @@ android {
// manifestPlaceholders = [
// AMAP_KEY : "1fd4e93e3b4b13747da41f484c955fe2", /// 高德地图key
// ]
// ndk {
// abiFilters 'armeabi-v7a'
// }
ndk {
abiFilters 'armeabi-v7a'
}
multiDexEnabled true
manifestPlaceholders = [
JPUSH_PKGNAME : 'com.cyhd.henhoandroid',


二進制
assets/fonts/iconfont.ttf 查看文件


+ 1
- 1
i18n/vi-VN.json 查看文件

@@ -1042,7 +1042,7 @@
"other_pay": "Người khác trả hộ",
"friend_verification": "Xác thực bạn bè",
"add_friends_tips": "Đơn xin xác thực của bạn đã gửi và chờ đối phương thông qua",
"i_am": "Tôi là/s1",
"i_am": "Tôi là /s1",
"agree": "Cho phép",
"privacyAgreement": "\"Hi\"Bạn cần đồng ý với \"Thỏa thuận quyền riêng tư\" để sử dụng",
"privacy": "Thỏa thuận quyền riêng tư",


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

@@ -1050,6 +1050,7 @@ class _AddProgramState extends State<AddProgram> {
: CachedNetworkImage(
imageUrl: f,
fit: BoxFit.cover,
placeholder: CustomUI.buildImgLoding,
),
))),
Positioned(


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

@@ -91,7 +91,6 @@ class _MyProgramPageState extends State<MyProgramPage> {
var data = {
"userId": UserData().basicInfo.userId,
"visitUserId": widget.userId,
//"type": widget.isProgram == true ? 1 : 2,
};
data['sign'] = TokenMgr().getSign(data);
data['page'] = _page;


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

@@ -191,9 +191,6 @@ class _ProfilePageState extends State<ProfilePage>
.initVoucher(data['Voucher']);
}
});
} else {
// getFirstDy();
// getFirstProgram();
}
}
@@ -1654,7 +1651,7 @@ class _ProfilePageState extends State<ProfilePage>
//同意好友后发送打招呼
MsgModel msgModel = MsgHandler.createSendMsg(
ChatType.TextChatType, I18n.of(context).new_friends_tips,
ChatType.TextChatType, I18n.of(context).new_friends_tips,
friendId: userInfo.userId,
refMsg: null,
refShortTxt: null,


+ 40
- 86
lib/home/friend_page.dart 查看文件

@@ -1,9 +1,7 @@
import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:chat/home/global_search.dart';
import 'package:chat/home/new_addfriends.dart';
import 'package:chat/home/new_friends.dart';
import 'package:chat/home/search_newfriend.dart';
import 'package:chat/models/friends_info.dart';
import 'package:flutter/material.dart';
import 'package:chat/data/UserData.dart';
@@ -191,18 +189,18 @@ class _FriendPageState extends State<FriendPage> {
));
}
showPermission() async {
if (await CustomUI.showPermissionSetting(
Constants.getCurrentContext(),
PermissionGroup.contacts,
I18n.of(Constants.getCurrentContext()).contact_permission)) {
MessageMgr().emit('PostContact');
Navigator.push(Constants.getCurrentContext(),
MaterialPageRoute<void>(builder: (BuildContext context) {
return ContactsPage();
}));
}
}
// showPermission() async {
// if (await CustomUI.showPermissionSetting(
// Constants.getCurrentContext(),
// PermissionGroup.contacts,
// I18n.of(Constants.getCurrentContext()).contact_permission)) {
// MessageMgr().emit('PostContact');
// Navigator.push(Constants.getCurrentContext(),
// MaterialPageRoute<void>(builder: (BuildContext context) {
// return ContactsPage();
// }));
// }
// }
getFriendList() async {
friendList = await FriendListMgr().getFriendList();
@@ -260,84 +258,14 @@ class _FriendPageState extends State<FriendPage> {
}
initNewFriendsList(showUserList) {
_functionButtons = [
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe659,
title: I18n.of(Constants.getCurrentContext()).scan,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF6171F1),
const Color(0xFF3441C1),
]),
onPressed: () {
CustomUI().goScanPage(Constants.getCurrentContext());
}),
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe67a,
isShowDivder: true,
title: I18n.of(Constants.getCurrentContext()).contact_add,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF1AC59E),
const Color(0xFF088E76),
]),
onPressed: () async {
final PermissionStatus addStatus = await PermissionHandler()
.checkPermissionStatus(PermissionGroup.contacts);
if ((addStatus == PermissionStatus.unknown ||
addStatus == PermissionStatus.denied) &&
Platform.isIOS) {
CustomUI.buildContacts(context, I18n.of(context).privacyAgreement,
I18n.of(context).determine, () {
Navigator.of(context).pop();
showPermission();
}, title: I18n.of(context).tip);
} else {
showPermission();
}
}),
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe662,
isShowDivder: true,
title: I18n.of(Constants.getCurrentContext()).add_friends,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF9E58E5),
const Color(0xFF6118A6),
]),
onPressed: () async {
Navigator.push(Constants.getCurrentContext(),
MaterialPageRoute<void>(builder: (BuildContext context) {
return SearchNewFriendsPage();
}));
}),
];
_functionButtons.insert(0, _buildNewFriends(showUserList));
_functionButtons = [_buildNewFriends(showUserList)];
}
msgAddfrend(data) {
// setState(() {
// _contactsFuture = FriendListMgr().getFriendList();
// });
getFriendList();
}
msgDeletefrend(data) {
// setState(() {
// _contactsFuture = FriendListMgr().getFriendList();
// });
getFriendList();
}
@@ -545,6 +473,32 @@ class _FriendPageState extends State<FriendPage> {
textScaleFactor: 1.0, style: Constants.MainTitleStyle),
centerTitle: false,
elevation: 1,
actions: <Widget>[
Container(
child: IconButton(
icon: CircleAvatar(
backgroundColor: Constants.GreyBackgroundColor,
radius: 13.75,
child: Padding(
padding: EdgeInsets.only(bottom: 1.5),
child: Icon(
IconData(0xe662,
fontFamily: Constants.IconFontFamily),
color: Constants.BlackTextColor,
size: 21,
))),
onPressed: () {
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
return NewAddFriendsPage();
},
),
);
},
),
),
],
bottom: CustomUI.buildSearchButton(context, () {
Navigator.of(context).push(
new MaterialPageRoute(


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

@@ -14,30 +14,33 @@ import 'package:qr_flutter/qr_flutter.dart';
class MyQr extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment.center,
margin: EdgeInsets.only(top: 55.5, left: 25, right: 25),
height: 400,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
_head(context),
_qrImg(),
Container(
padding: EdgeInsets.all(20),
child: Text(
I18n.of(context).scan_and_add,
textScaleFactor: 1.0,
style: TextStyle(fontSize: 12.5),
),
)
],
),
);
return Align(
alignment: Alignment.topCenter,
child: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(top: 55.5),
width: 315,
height: 424,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
_head(context),
_qrImg(),
Container(
padding: EdgeInsets.all(20),
child: Text(
I18n.of(context).scan_and_add,
textScaleFactor: 1.0,
style: TextStyle(fontSize: 12.5),
),
)
],
),
));
}
_qrImg() {


+ 194
- 0
lib/home/new_addfriends.dart 查看文件

@@ -0,0 +1,194 @@
import 'dart:io';

import 'package:cached_network_image/cached_network_image.dart';
import 'package:chat/home/global_search.dart';
import 'package:chat/home/new_friends.dart';
import 'package:chat/models/friends_info.dart';
import 'package:chat/utils/TutorialOverlay.dart';
import 'package:flutter/material.dart';
import 'package:chat/data/UserData.dart';
import 'package:chat/data/constants.dart';
import 'package:chat/generated/i18n.dart';
import 'package:chat/utils/CustomUI.dart';
import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/TokenMgr.dart';
import 'package:chat/utils/conversation_table.dart';
import 'package:chat/utils/friend_list_mgr.dart';
import 'package:chat/utils/screen.dart';
import 'package:dio/dio.dart';
import 'package:oktoast/oktoast.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'address_book.dart';
import 'my_qr.dart';

List showUserList = [];

bool isHaveNewFriends() {
return showUserList.length > 0;
}

class NewAddFriendsPage extends StatefulWidget {
@override
_NewAddFriendsPageState createState() => _NewAddFriendsPageState();
}

class _NewAddFriendsPageState extends State<NewAddFriendsPage> {
ScrollController _scrollController;
List<Widget> _functionButtons = [];
@override
void initState() {
super.initState();

_functionButtons = [
InkWell(
onTap: () {
Navigator.of(context).push(TutorialOverlay(
child: InkWell(
onTap: () {
Navigator.of(context).pop();
},
child: Scaffold(
backgroundColor:
Constants.BlackTextColor.withOpacity(0.0),
body: Container(
margin: EdgeInsets.only(top: Screen.height*0.05),
alignment: Alignment.center,
child: MyQr())))));
},
child: Container(
height: 70,
width: Screen.width,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
constraints: BoxConstraints(maxWidth: 200),
child: Text(
'${I18n.of(Constants.getCurrentContext()).my_qr}: ${UserData().basicInfo.nickName}',
style: TextStyle(fontSize: 13),
overflow: TextOverflow.ellipsis,
)),
SizedBox(width: 9),
Container(
margin: EdgeInsets.only(bottom: 3),
child: Icon(
IconData(0xe682, fontFamily: Constants.IconFontFamily),
size: 18,
color: const Color(0xFF008AFF),
))
]),
)),
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe659,
title: I18n.of(Constants.getCurrentContext()).scan,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF6171F1),
const Color(0xFF3441C1),
]),
onPressed: () {
CustomUI().goScanPage(Constants.getCurrentContext());
}),
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe67a,
isShowDivder: true,
title: I18n.of(Constants.getCurrentContext()).contact_add,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF1AC59E),
const Color(0xFF088E76),
]),
onPressed: () async {
final PermissionStatus addStatus = await PermissionHandler()
.checkPermissionStatus(PermissionGroup.contacts);
if ((addStatus == PermissionStatus.unknown ||
addStatus == PermissionStatus.denied) &&
Platform.isIOS) {
CustomUI.buildContacts(context, I18n.of(context).privacyAgreement,
I18n.of(context).determine, () {
Navigator.of(context).pop();
showPermission();
}, title: I18n.of(context).tip);
} else {
showPermission();
}
}),
];
_scrollController = new ScrollController();
}

showPermission() async {
if (await CustomUI.showPermissionSetting(
Constants.getCurrentContext(),
PermissionGroup.contacts,
I18n.of(Constants.getCurrentContext()).contact_permission)) {
MessageMgr().emit('PostContact');
Navigator.push(Constants.getCurrentContext(),
MaterialPageRoute<void>(builder: (BuildContext context) {
return ContactsPage();
}));
}
}

@override
void dispose() {
super.dispose();
_scrollController.dispose();
}

@override
Widget build(BuildContext context) {
final List<Widget> _body = [];
_body.addAll([
ListView.builder(
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
if (index == 0) {
return Padding(
padding: EdgeInsets.only(top: 7),
child: _functionButtons[index],
);
} else {
return _functionButtons[index];
}
},
itemCount: _functionButtons.length,
),
]);

return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: AppBar(
backgroundColor: AppColors.NewAppbarBgColor,
title: Text(I18n.of(context).add_friends,
textScaleFactor: 1.0, style: Constants.MainTitleStyle),
centerTitle: true,
elevation: 1,
leading: CustomUI.buildCustomLeading(context),
bottom: CustomUI.buildSearchButton(context, () {
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
return GlobalSearchPage(
type: GlobalSearchPageType.SearchNewFriends,
);
},
),
);
})),
body: Stack(
children: _body,
));
}
}

+ 90
- 4
lib/home/new_friends.dart 查看文件

@@ -8,13 +8,18 @@ import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/TokenMgr.dart';
import 'package:chat/utils/conversation_table.dart';
import 'package:chat/utils/screen.dart';
import 'package:dio/dio.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'package:chat/models/friends_info.dart';
import 'ProfilePage.dart';
import 'package:permission_handler/permission_handler.dart';
import 'dart:io';
import 'address_book.dart';
import 'new_addfriends.dart';
class _ContactItem extends StatelessWidget {
_ContactItem(
@@ -186,6 +191,8 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
List<FriendModel> friendList = [];
List<Widget> _functionButtons = [];
@override
void initState() {
super.initState();
@@ -195,6 +202,49 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
getNewFriendList();
_scrollController = new ScrollController();
MessageMgr().on('do_friend_apply', messageApply);
_functionButtons = [
FriendsInfo(
avatar: '',
userId: 0,
iconCode: 0xe67a,
title: I18n.of(Constants.getCurrentContext()).contact_add,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
const Color(0xFF1AC59E),
const Color(0xFF088E76),
]),
onPressed: () async {
final PermissionStatus addStatus = await PermissionHandler()
.checkPermissionStatus(PermissionGroup.contacts);
if ((addStatus == PermissionStatus.unknown ||
addStatus == PermissionStatus.denied) &&
Platform.isIOS) {
CustomUI.buildContacts(context, I18n.of(context).privacyAgreement,
I18n.of(context).determine, () {
Navigator.of(context).pop();
showPermission();
}, title: I18n.of(context).tip);
} else {
showPermission();
}
}),
];
}
showPermission() async {
if (await CustomUI.showPermissionSetting(
Constants.getCurrentContext(),
PermissionGroup.contacts,
I18n.of(Constants.getCurrentContext()).contact_permission)) {
MessageMgr().emit('PostContact');
Navigator.push(Constants.getCurrentContext(),
MaterialPageRoute<void>(builder: (BuildContext context) {
return ContactsPage();
}));
}
}
messageApply(data) {
@@ -244,7 +294,17 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
_body.add(ListView.builder(
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
int _contactIndex = index;
if (index < _functionButtons.length) {
if (index == 0) {
return Padding(
padding: EdgeInsets.only(top: 7),
child: _functionButtons[index],
);
} else {
return _functionButtons[index];
}
}
int _contactIndex = index - _functionButtons.length;
bool _isGroupTitle = true;
FriendModel _contact = friendList[_contactIndex];
@@ -262,7 +322,7 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
avatar: _contact.avatar,
title: Provider.of<RefNameProvider>(context)
.getRefName(_contact.friendId, _contact.name),
state: _contact.state,
state: _contact.state,
isShowDivder: true,
applyId: _contact.applyId,
groupTitle: _isGroupTitle
@@ -271,7 +331,7 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
: I18n.of(context).after_three_day)
: null);
},
itemCount: friendList.length,
itemCount: friendList.length + _functionButtons.length,
));
} else {
_body.add(ListView.builder(
@@ -327,6 +387,32 @@ class _NewFriendsPageState extends State<NewFriendsPage> {
centerTitle: true,
leading: CustomUI.buildCustomLeading(context),
elevation: 1,
actions: <Widget>[
Container(
child: IconButton(
icon: CircleAvatar(
backgroundColor: Constants.GreyBackgroundColor,
radius: 13.75,
child: Padding(
padding: EdgeInsets.only(bottom: 1.5),
child: Icon(
IconData(0xe662,
fontFamily: Constants.IconFontFamily),
color: Constants.BlackTextColor,
size: 21,
))),
onPressed: () {
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
return NewAddFriendsPage();
},
),
);
},
),
),
],
bottom: PreferredSize(
preferredSize: Size.fromHeight(49),
child: Container(


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

@@ -46,7 +46,7 @@ class HttpUtil {
//static const String BaseUrl = 'http://192.168.0.207:9080/';
static const String BaseUrl = 'http://120.79.107.63:9080/';
//static const String BaseUrl = 'http://192.168.0.177:9016/';
// static const String BaseUrl = 'https://datasm.chengyouhd.com/';
//static const String BaseUrl = 'https://datasm.chengyouhd.com/';
static HttpUtil _getInstance() {
if (_instance == null) {
@@ -219,7 +219,7 @@ class HttpUtil {
var fileBytes;
if (contentType == 'image' && size > 10240) {
fileBytes =
await WidgetUtil.getCompressImg(path, quality: 20, percentage: 60);
await WidgetUtil.getCompressImg(path, quality: 60, percentage: 60);
} else {
fileBytes = imgfile.readAsBytesSync();
}
@@ -369,28 +369,6 @@ class HttpUtil {
}
}
getFirstProgram() async {
Map data = {
"userId": UserData().basicInfo.userId,
"visitUserId": UserData().basicInfo.userId,
"type": 1,
};
data['sign'] = TokenMgr().getSign(data);
data['page'] = 1;
data['rows'] = 1;
Response res = await HttpUtil().post('station/gain/program', data: data);
if (res == null) {
print('请求异常');
return;
}
var resData = res.data;
if (resData['code'] == 0) {
UserData().isCanProgram =
resData['data'] == null || resData['data'][0]['Status'] == 1;
}
}
Future getTranslateState(int sessionId) async {
Map data = {
"userId": UserData().basicInfo.userId,
@@ -553,7 +531,6 @@ class HttpUtil {
MessageMgr().emit('update_system');
saveAotuLoginKey(resData);
getFirstProgram();
initLocation();
}
@@ -1380,8 +1357,7 @@ class HttpUtil {
ChatDataMgr().updateMsgState(msgModel.sessionId, msgModel.time,
msgModel.channelType, msgModel.state);
return true;
}else{
} else {
showToast(resData['msg']);
}


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

@@ -328,7 +328,7 @@ class _PicSwiperState extends State<PicSwiper>
}
return GestureConfig(
inPageView: true,
initialScale: initialScale,
//initialScale: initialScale,
maxScale: max(initialScale, 5.0),
initialAlignment: InitialAlignment.topCenter,
animationMaxScale: max(initialScale, 5.0),
@@ -393,7 +393,7 @@ class _PicSwiperState extends State<PicSwiper>
}
return GestureConfig(
inPageView: true,
initialScale: initialScale,
//initialScale: initialScale,
maxScale: max(initialScale, 5.0),
initialAlignment: InitialAlignment.topCenter,
animationMaxScale: max(initialScale, 5.0),


正在載入中…
取消
儲存