Browse Source

优化排版,完善功能

dev-2.0
王子贤 2 weeks ago
parent
commit
f9fd2f78f6
16 changed files with 380 additions and 77 deletions
  1. BIN
      assets/images/login_warning.png
  2. 1
      lib/components/home_appbar.dart
  3. 3
      lib/controller/discover/search_page_controller.dart
  4. 2
      lib/controller/message/conversation_controller.dart
  5. 153
      lib/controller/mine/user_controller.dart
  6. 1
      lib/generated/assets.dart
  7. 12
      lib/model/mine/user_base_data.dart
  8. 31
      lib/pages/discover/discover_page.dart
  9. 10
      lib/pages/discover/search_page.dart
  10. 4
      lib/pages/home/content_card.dart
  11. 14
      lib/pages/home/home_page.dart
  12. 24
      lib/pages/home/timeline_item.dart
  13. 15
      lib/pages/main/main_page.dart
  14. 80
      lib/pages/message/conversation_tab.dart
  15. 80
      lib/pages/message/message_page.dart
  16. 27
      lib/pages/mine/mine_page.dart

BIN
assets/images/login_warning.png

Before After
Width: 176  |  Height: 176  |  Size: 17 KiB

1
lib/components/home_appbar.dart

@ -62,6 +62,7 @@ class _HomeAppbarState extends State<HomeAppbar> {
),
SizedBox(height: ScreenUtil().setWidth(4),),
if(currentActive == entry.key) Image.asset(
gaplessPlayback: true,
Assets.imagesTabChangeIcon,
width: 20,
)

3
lib/controller/discover/search_page_controller.dart

@ -36,6 +36,9 @@ class SearchPageController extends GetxController {
}
searchData() async {
if(name.value.trim() == "" || name.value.trim().isEmpty){
return;
}
try{
final response = await _networkService.rtcApi.userPageLiveMatchmaker(

2
lib/controller/message/conversation_controller.dart

@ -73,6 +73,7 @@ class ConversationController extends GetxController {
final name = "".obs;
final showSearch = false.obs;
final isSearch = false.obs;
@ -81,6 +82,7 @@ class ConversationController extends GetxController {
}
search(){
isSearch.value = true;
if(name.value == ""){
_checkAndLoadConversations();
} else {

153
lib/controller/mine/user_controller.dart

@ -1,5 +1,13 @@
import 'package:dating_touchme_app/controller/discover/room_controller.dart';
import 'package:dating_touchme_app/controller/message/conversation_controller.dart';
import 'package:dating_touchme_app/controller/overlay_controller.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/generated/assets.dart';
import 'package:dating_touchme_app/im/im_manager.dart';
import 'package:dating_touchme_app/oss/oss_manager.dart';
import 'package:dating_touchme_app/pages/mine/login_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get_storage/get_storage.dart';
@ -85,6 +93,57 @@ class UserController extends GetxController {
return false;
}
void logout() async {
// 退
if (Get.isRegistered<RoomController>()) {
try {
final roomController = Get.find<RoomController>();
await roomController.leaveChannel();
} catch (e) {
print('退出直播间失败: $e');
}
}
//
if (Get.isRegistered<OverlayController>()) {
try {
final overlayController = Get.find<OverlayController>();
overlayController.hide(); //
overlayController.hideVideoCall(); //
} catch (e) {
print('取消小窗口失败: $e');
}
}
// 退 IM
if(IMManager.instance.isInitialized){
await IMManager.instance.logout();
}
//
if (Get.isRegistered<ConversationController>()) {
final conversationController = Get.find<ConversationController>();
conversationController.clearConversations();
}
// App清除本地存储
// storage.erase();
storage.remove('userId');
storage.remove('token');
// storage.write('hasAgreedUserAgreement', true);
//
GlobalData().logout();
Get.offAll(() => LoginPage());
}
static const statusMap = {
1: '3天',
2: '7天',
3: '15天',
4: '30天',
5: '永久',
};
///
Future<void> getBaseUserInfo(String userId, bool isMain) async {
try {
@ -93,6 +152,100 @@ class UserController extends GetxController {
if (response.data.isSuccess && response.data.data != null) {
//
final baseInfo = response.data.data!;
if(baseInfo.isForbidden == true){
final storage = GetStorage();
final userId = storage.read<String>('userId');
if (userId != null && userId.isNotEmpty) {
logout();
}
SmartDialog.dismiss();
SmartDialog.show(
onDismiss: (){
SmartDialog.dismiss();
},
builder: (context) {
return ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(16.w)),
child: Material(
color: Colors.white,
child: Container(
width: 311.w,
height: 256.w,
padding: EdgeInsets.only(
top: 18.w,
right: 19.w,
left: 19.w
),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Color(0xFFFFFFFF),
Color(0xFFF4F2FF),
],
),
),
child: Column(
children: [
Image.asset(
Assets.imagesLoginWarning,
width: 44.w,
height: 44.w,
),
SizedBox(height: 4.w,),
Text(
"账号已限制登录",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16.w
),
),
SizedBox(height: 10.w,),
Text(
"你的账号涉嫌违规已被系统封禁,如需申诉,请点击右上角联系客服进行反馈。\n"
"封禁时间:${statusMap[baseInfo.forbiddenCycle] ?? "未知"}\n"
"${baseInfo.forbiddenCycle != 5 ? "解除时间:${baseInfo.forbiddenEndTime}" : ""}",
style: TextStyle(
fontSize: 13.w
),
),
SizedBox(height: 12.w,),
Container(
width: 128.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(117, 98, 249, 1)
),
child: Center(
child: Text(
"知道了",
style: TextStyle(
fontSize: 14.w,
color: Colors.white
),
),
),
).onTap(() {
// overlay
SmartDialog.dismiss();
})
],
),
),
),
);
},
);
return ;
}
final result = await _userApi.getMarriageInformationDetail();
// print(result.data);
if (result.data.isSuccess) {

1
lib/generated/assets.dart

@ -146,6 +146,7 @@ class Assets {
static const String imagesLocationIcon = 'assets/images/location_icon.png';
static const String imagesLoginBg = 'assets/images/login_bg.png';
static const String imagesLoginLogo = 'assets/images/login_logo.png';
static const String imagesLoginWarning = 'assets/images/login_warning.png';
static const String imagesMail = 'assets/images/mail.png';
static const String imagesMale = 'assets/images/male.png';
static const String imagesMaleEmpty = 'assets/images/male_empty.png';

12
lib/model/mine/user_base_data.dart

@ -50,6 +50,9 @@ class UserBaseData {
final LiveMatchmaker? liveMatchmaker;
final int matchmakerType;
final bool? isOnline; // 线
final bool? isForbidden;
final String? forbiddenEndTime;
final int forbiddenCycle;
UserBaseData({
@ -62,6 +65,9 @@ class UserBaseData {
required this.matchmakerType,
this.liveMatchmaker,
this.isOnline,
this.isForbidden,
required this.forbiddenEndTime,
required this.forbiddenCycle,
});
// JSON映射创建实例
@ -76,6 +82,9 @@ class UserBaseData {
userId: json['userId'] ?? '',
liveMatchmaker: json['liveMatchmaker'] != null ? LiveMatchmaker.fromJson(json['liveMatchmaker'] as Map<String, dynamic>) : null,
isOnline: json['isOnline'] as bool?,
isForbidden: json['isForbidden'] as bool?,
forbiddenCycle: json['forbiddenCycle'] ?? 0,
forbiddenEndTime: json['forbiddenEndTime'] ?? '',
);
}
@ -91,6 +100,9 @@ class UserBaseData {
'userId': userId,
'liveMatchmaker': liveMatchmaker?.toJson(),
'isOnline': isOnline,
'isForbidden': isForbidden,
'forbiddenCycle': forbiddenCycle,
'forbiddenEndTime': forbiddenEndTime,
};
}

31
lib/pages/discover/discover_page.dart

@ -65,7 +65,11 @@ class _DiscoverPageState extends State<DiscoverPage>
super.build(context);
return Stack(
children: [
Positioned.fill(
child: Container(color: Colors.white,),
),
Image.asset(
gaplessPlayback: true,
Assets.imagesBgInformation,
fit: BoxFit.cover,
width: double.infinity,
@ -84,9 +88,30 @@ class _DiscoverPageState extends State<DiscoverPage>
right: Row(
children: [
Icon(
Icons.search,
size: 30,
Container(
width: 60.w,
height: 27.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(27.w)),
color: const Color.fromRGBO(0, 0, 0, .2)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.search,
size: 15.w,
color: Colors.white,
),
Text(
"搜索",
style: TextStyle(
fontSize: 12.w,
color: Colors.white
),
)
],
),
).onTap((){
Get.to(() => SearchPage());
}),

10
lib/pages/discover/search_page.dart

@ -31,18 +31,18 @@ class SearchPage extends StatelessWidget {
padding: EdgeInsets.symmetric(horizontal: 15.w),
margin: EdgeInsets.only(bottom: 10.w),
child: Container(
height: 30.w,
height: 45.w,
padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(30.w)),
color: const Color.fromRGBO(200, 200, 200, 1.0)
borderRadius: BorderRadius.all(Radius.circular(9.w)),
color: const Color.fromRGBO(247, 247, 247, 1.0)
),
child: Row(
children: [
Icon(
Icons.search,
size: 20,
color: Colors.grey,
color: const Color.fromRGBO(51, 51, 51, 1),
),
Expanded(
child: TextField(
@ -97,7 +97,7 @@ class SearchPage extends StatelessWidget {
Text(
"仅支持搜索",
style: TextStyle(
color: const Color.fromRGBO(121, 121, 121, 1)
color: const Color.fromRGBO(189, 189, 189, 1)
),
),
Text(

4
lib/pages/home/content_card.dart

@ -55,6 +55,7 @@ class _CardHeader extends StatelessWidget {
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 60,
height: 60,
@ -106,6 +107,7 @@ class _CardHeader extends StatelessWidget {
mainAxisSize: MainAxisSize.min, // Row只占用必要的宽度
children: [
Image.asset(
gaplessPlayback: true,
Assets.imagesVerifiedIcon,
width: 14,
height: 12,
@ -205,6 +207,7 @@ class _CardHeader extends StatelessWidget {
}
},
child: !item.liveStreaming ? Image.asset(
gaplessPlayback: true,
_getButtonImage(isLive, isOnline),
width: item.liveStreaming ? 60 : 50,
height: 30,
@ -377,6 +380,7 @@ class _NetworkImageWidget extends StatelessWidget {
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 60,
height: 60,

14
lib/pages/home/home_page.dart

@ -31,8 +31,13 @@ class _HomePageState extends State<HomePage>
builder: (controller) {
return Stack(
children: [
Positioned.fill(
child: Container(color: Colors.white,),
),
// -
Image.asset(
gaplessPlayback: true,
Assets.imagesBgInformation,
fit: BoxFit.cover,
width: double.infinity,
@ -62,9 +67,9 @@ class _HomePageState extends State<HomePage>
index: controller.selectedTabIndex.value,
children: const [
//
RecommendTab(),
AllTimeline(),
//
RecommendTab(),
NearbyTab()
],
);
@ -86,9 +91,9 @@ class _HomePageState extends State<HomePage>
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
_buildTabButton(title: '广场', index: 0, controller: controller),
_buildTabButton(title: '推荐', index: 0, controller: controller),
const SizedBox(width: 28),
_buildTabButton(title: '推荐', index: 1, controller: controller),
_buildTabButton(title: '广场', index: 1, controller: controller),
const SizedBox(width: 28),
_buildTabButton(title: '同城', index: 2, controller: controller),
],
@ -131,7 +136,8 @@ class _HomePageState extends State<HomePage>
),
const SizedBox(height: 6),
selected
? Image.asset(Assets.imagesTabChangeIcon, width: 32, height: 8)
? Image.asset(Assets.imagesTabChangeIcon, width: 32, height: 8,
gaplessPlayback: true,)
: const SizedBox(height: 8),
],
),

24
lib/pages/home/timeline_item.dart

@ -54,6 +54,7 @@ class _TimelineItemState extends State<TimelineItem> {
Padding(
padding: EdgeInsets.symmetric(horizontal: 0),
child: Image.asset(
gaplessPlayback: true,
emoji.path,
width: 24.w,
height: 24.w,
@ -156,6 +157,24 @@ class _TimelineItemState extends State<TimelineItem> {
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
imageBuilder: (context, imageProvider) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(40),
image: DecorationImage(
image: imageProvider,
fit: BoxFit.cover,
),
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 105.w,
height: 105.w,
fit: BoxFit.cover,
),
),
).onTap((){
Get.to(() => UserInformationPage(miId: widget.item.miId ?? ""));
@ -235,6 +254,7 @@ class _TimelineItemState extends State<TimelineItem> {
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 341.w,
height: 341.w,
@ -263,6 +283,7 @@ class _TimelineItemState extends State<TimelineItem> {
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 165.w,
height: 165.w,
@ -295,6 +316,7 @@ class _TimelineItemState extends State<TimelineItem> {
),
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 105.w,
height: 105.w,
@ -313,6 +335,7 @@ class _TimelineItemState extends State<TimelineItem> {
Row(
children: [
Image.asset(
gaplessPlayback: true,
(widget.item.isLiked ?? false) ? Assets.imagesLikeActive : Assets.imagesLikeIcon,
width: 14.w,
height: 12.w,
@ -333,6 +356,7 @@ class _TimelineItemState extends State<TimelineItem> {
Row(
children: [
Image.asset(
gaplessPlayback: true,
Assets.imagesCommentIcon,
width: 15.w,
height: 15.w,

15
lib/pages/main/main_page.dart

@ -96,9 +96,10 @@ class _MainPageState extends State<MainPage> {
children: [
_buildBottomNavigationBar(),
Positioned(
left: MediaQuery.of(context).size.width / 2 - 30,
top: -20,
left: 150,
child: Image.asset(
gaplessPlayback: true,
Assets.imagesPublish,
width: 60,
height: 60,
@ -135,8 +136,10 @@ class _MainPageState extends State<MainPage> {
tabItem('找对象', Assets.imagesDiscoverPre, Assets.imagesDiscoverNol, 1, 0),
TDBottomTabBarTabConfig(
tabText: "",
selectedIcon: Image.asset(Assets.imagesHomePre, width: 30, height: 30, fit: BoxFit.cover, color: Colors.transparent,),
unselectedIcon: Image.asset(Assets.imagesHomeNol, width: 30, height: 30, fit: BoxFit.cover, color: Colors.transparent,),
selectedIcon: Image.asset(
gaplessPlayback: true,Assets.imagesHomePre, width: 30, height: 30, fit: BoxFit.cover, color: Colors.transparent,),
unselectedIcon: Image.asset(
gaplessPlayback: true,Assets.imagesHomeNol, width: 30, height: 30, fit: BoxFit.cover, color: Colors.transparent,),
onTap: (){
Get.to(() => SendTimeline());
}
@ -152,8 +155,10 @@ class _MainPageState extends State<MainPage> {
TDBottomTabBarTabConfig tabItem(String title, String selectedIcon, String unselectedIcon, int index, int unreadCount) {
return TDBottomTabBarTabConfig(
tabText: title,
selectedIcon: Image.asset(selectedIcon, width: 30, height: 30, fit: BoxFit.cover),
unselectedIcon: Image.asset(unselectedIcon, width: 30, height: 30, fit: BoxFit.cover),
selectedIcon: Image.asset(
gaplessPlayback: true,selectedIcon, width: 30, height: 30, fit: BoxFit.cover),
unselectedIcon: Image.asset(
gaplessPlayback: true,unselectedIcon, width: 30, height: 30, fit: BoxFit.cover),
selectTabTextStyle: TextStyle(color: Color(0xFFED4AC3)),
unselectTabTextStyle: TextStyle(color: Color(0xFF999999)),
badgeConfig: BadgeConfig(

80
lib/pages/message/conversation_tab.dart

@ -29,43 +29,51 @@ class _ConversationTabState extends State<ConversationTab>
super.build(context);
return Column(
children: [
Container(
padding: EdgeInsets.symmetric(
horizontal: 22.w
),
child: Row(
children: [
Column(
Obx((){
if(!controller.isSearch.value){
return Container(
padding: EdgeInsets.symmetric(
horizontal: 22.w
),
child: Row(
children: [
Container(
width: 90.w,
height: 50.w,
margin: EdgeInsets.only(bottom: 5.w),
decoration: BoxDecoration(
color: const Color.fromRGBO(226, 222, 255, 1),
borderRadius: BorderRadius.all(Radius.circular(50.w))
),
child: Center(
child: Image.asset(
Assets.imagesConnectHistoryIcon,
width: 40.w,
height: 40.w,
Column(
children: [
Container(
width: 90.w,
height: 50.w,
margin: EdgeInsets.only(bottom: 5.w),
decoration: BoxDecoration(
color: const Color.fromRGBO(226, 222, 255, 1),
borderRadius: BorderRadius.all(Radius.circular(50.w))
),
child: Center(
child: Image.asset(
gaplessPlayback: true,
Assets.imagesConnectHistoryIcon,
width: 40.w,
height: 40.w,
),
),
),
),
),
Text(
"连线记录",
style: TextStyle(
fontSize: 11.w
),
)
Text(
"连线记录",
style: TextStyle(
fontSize: 11.w
),
)
],
).onTap((){
Get.to(() => ConnectHistoryPage());
})
],
).onTap((){
Get.to(() => ConnectHistoryPage());
})
],
),
),
),
);
} else {
return SizedBox();
}
}),
//
Expanded(
child: Obx(() {
@ -219,12 +227,14 @@ class _BuildConversationItemState extends State<BuildConversationItem> {
height: 56,
fit: BoxFit.cover,
placeholder: (context, url) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 56,
height: 56,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 56,
height: 56,
@ -232,6 +242,7 @@ class _BuildConversationItemState extends State<BuildConversationItem> {
),
)
: Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 56,
height: 56,
@ -429,6 +440,7 @@ class _BuildConversationItemState extends State<BuildConversationItem> {
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 2.w),
child: Image.asset(
gaplessPlayback: true,
emoji.path,
width: 16.w,
height: 16.w,

80
lib/pages/message/message_page.dart

@ -41,6 +41,7 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
super.build(context);
return Container(
decoration: BoxDecoration(
color: Colors.white,
image: DecorationImage(
image: AssetImage(Assets.imagesBgInformation),
fit: BoxFit.cover,
@ -71,24 +72,24 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
),
actions: [
Container(
width: 243,
width: !controller.showSearch.value ? 200 : 270,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
if(controller.showSearch.value) Expanded(
child: Container(
height: 30.w,
height: 27.w,
padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(30.w)),
color: const Color.fromRGBO(200, 200, 200, 1.0)
borderRadius: BorderRadius.all(Radius.circular(27.w)),
color: Colors.white
),
child: Row(
children: [
Icon(
Icons.search,
size: 20,
color: Colors.grey,
color: const Color.fromRGBO(144, 144, 144, 1)
),
Expanded(
child: TextField(
@ -129,12 +130,6 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
SizedBox(width: 10,),
Row(
children: [
Container(
height: 15,
width: 1,
color: const Color.fromRGBO(51, 51, 51, 1),
),
SizedBox(width: 10,),
Text(
"搜索",
style: TextStyle(
@ -150,13 +145,44 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
),
),
SizedBox(width: 10,),
Icon(
Icons.search,
size: 30,
if(!controller.showSearch.value) Container(
width: 60.w,
height: 27.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(27.w)),
color: Colors.white
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.search,
size: 15.w,
),
Text(
"搜索",
style: TextStyle(
fontSize: 12.w
),
)
],
),
).onTap((){
controller.showSearch.value = !controller.showSearch.value;
setState(() {
});
}),
if(controller.showSearch.value) Text(
"收起",
style: TextStyle(
fontSize: 14.w
),
).onTap((){
controller.isSearch.value = false;
controller.showSearch.value = !controller.showSearch.value;
setState(() {
});
})
],
@ -164,15 +190,31 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
),
SizedBox(width: 10,),
//
GestureDetector(
if(!controller.showSearch.value) GestureDetector(
key: _filterButtonKey,
onTap: () => _showFilterMenu(context),
child: Container(
width: 20,
height: 20,
width: 60.w,
height: 27.w,
margin: const EdgeInsets.only(right: 16),
alignment: Alignment.center,
child: Image.asset(Assets.imagesFilterIcon, width: 20,),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(27.w)),
color: Colors.white
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(Assets.imagesFilterIcon, width: 12.w,
gaplessPlayback: true,),
Text(
"筛选",
style: TextStyle(
fontSize: 12.w
),
)
],
),
),
),
],
@ -210,6 +252,7 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
const SizedBox(height: 6),
isSelected
? Image.asset(
gaplessPlayback: true,
Assets.imagesTabChangeIcon,
width: 20,
)
@ -327,6 +370,7 @@ class _MessagePageState extends State<MessagePage> with AutomaticKeepAliveClient
child: Row(
children: [
Image.asset(
gaplessPlayback: true,
icon,
width: 20,
height: 20,

27
lib/pages/mine/mine_page.dart

@ -150,6 +150,7 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
),
),
) : Image.asset(
gaplessPlayback: true,
Assets.imagesUserAvatar,
width: 60.w,
height: 60.w,
@ -191,6 +192,7 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
),
child: Center(
child: Image.asset(
gaplessPlayback: true,
Assets.imagesVipFont,
width: 20.w,
height: 8.w,
@ -226,6 +228,7 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
child: Row(
children: [
Image.asset(
gaplessPlayback: true,
Assets.imagesEdit,
width: 10.w,
height: 10.w,
@ -296,7 +299,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
style: cellStyle,
cells: [
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesRose, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesRose, height: 22.w, width: 22.w),
titleWidget: Text(
"我的玫瑰",
style: TextStyle(
@ -307,7 +311,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesWallet, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesWallet, height: 22.w, width: 22.w),
titleWidget: Text(
"我的钱包",
style: TextStyle(
@ -318,7 +323,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesCert, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesCert, height: 22.w, width: 22.w),
titleWidget: Text(
"认证中心",
style: TextStyle(
@ -342,7 +348,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesMatchmaker, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesMatchmaker, height: 22.w, width: 22.w),
titleWidget: Text(
"红娘等级",
style: TextStyle(
@ -353,7 +360,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
if(controller.matchmakerFlag.value)TDCell(arrow: true,
leftIconWidget: Image.asset('assets/images/matcher_task.png', height: 20.w, width: 18.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,'assets/images/matcher_task.png', height: 20.w, width: 18.w),
titleWidget: Text(
" 红娘任务",
style: TextStyle(
@ -373,7 +381,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
style: cellStyle,
cells: [
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesSetting, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesSetting, height: 22.w, width: 22.w),
titleWidget: Text(
"设置",
style: TextStyle(
@ -384,7 +393,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesCustomer, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesCustomer, height: 22.w, width: 22.w),
titleWidget: Text(
"联系客服",
style: TextStyle(
@ -395,7 +405,8 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin{
}
),
TDCell(arrow: true,
leftIconWidget: Image.asset(Assets.imagesMail, height: 22.w, width: 22.w),
leftIconWidget: Image.asset(
gaplessPlayback: true,Assets.imagesMail, height: 22.w, width: 22.w),
titleWidget: Text(
"意见反馈",
style: TextStyle(

Loading…
Cancel
Save