4 changed files with 583 additions and 127 deletions
Split View
Diff Options
-
270lib/pages/home/event_info.dart
-
67lib/pages/home/matchmaker_item.dart
-
48lib/pages/home/recommend_tab.dart
-
325lib/pages/home/timeline_info.dart
@ -0,0 +1,270 @@ |
|||
import 'package:dating_touchme_app/components/page_appbar.dart'; |
|||
import 'package:flutter/material.dart'; |
|||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|||
|
|||
class EventInfo extends StatelessWidget { |
|||
const EventInfo({super.key}); |
|||
|
|||
@override |
|||
Widget build(BuildContext context) { |
|||
return Scaffold( |
|||
appBar: const PageAppbar(title: "活动详情"), |
|||
body: SingleChildScrollView( |
|||
child: Container( |
|||
padding: EdgeInsets.all(15.w), |
|||
child: ClipRRect( |
|||
borderRadius: BorderRadius.all(Radius.circular(8.w)), |
|||
child: Container( |
|||
width: 345.w, |
|||
color: Colors.white, |
|||
child: Column( |
|||
children: [ |
|||
Image.network( |
|||
"https://dating-agency-test.oss-accelerate.aliyuncs.com/1.png", |
|||
width: 345.w, |
|||
fit: BoxFit.cover, |
|||
), |
|||
Container( |
|||
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 15.w), |
|||
margin: EdgeInsets.only(bottom: 15.w), |
|||
child: Column( |
|||
children: [ |
|||
Row( |
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|||
children: [ |
|||
Text( |
|||
"星河 DEEP--轻奢浪漫之旅", |
|||
style: TextStyle( |
|||
fontSize: 18.w, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
fontWeight: FontWeight.w500 |
|||
), |
|||
), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.group, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
size: 12.w, |
|||
), |
|||
SizedBox(width: 5.w,), |
|||
Text( |
|||
"0人已报名", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
) |
|||
], |
|||
), |
|||
SizedBox(height: 5.w,), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.access_time, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
size: 12.w, |
|||
), |
|||
Text( |
|||
"活动时间:", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"08-21 00:00至08-22 23:59", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
), |
|||
SizedBox(height: 5.w,), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.location_on_outlined, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
size: 12.w, |
|||
), |
|||
Text( |
|||
"地址:", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"广州市天河区地址待定", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
), |
|||
SizedBox(height: 5.w,), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.group_outlined, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
size: 12.w, |
|||
), |
|||
Text( |
|||
"人数:", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"男10人 女10人", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
), |
|||
SizedBox(height: 5.w,), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.currency_yen, |
|||
color: const Color.fromRGBO(255, 66, 236, 1), |
|||
size: 12.w, |
|||
), |
|||
Text( |
|||
"费用:", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"男:1520元/人", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
), |
|||
Row( |
|||
children: [ |
|||
Icon( |
|||
Icons.currency_yen, |
|||
color: const Color.fromRGBO(255, 66, 236, 0), |
|||
size: 12.w, |
|||
), |
|||
Text( |
|||
"费用:", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 0) |
|||
), |
|||
), |
|||
Text( |
|||
"女:1520元/人", |
|||
style: TextStyle( |
|||
fontSize: 12.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
) |
|||
], |
|||
), |
|||
SizedBox(height: 15.w,), |
|||
Stack( |
|||
children: [ |
|||
ClipRRect( |
|||
borderRadius: BorderRadius.all(Radius.circular(13.w)), |
|||
child: Row( |
|||
children: [ |
|||
Expanded( |
|||
child: Container( |
|||
height: 13.w, |
|||
color: const Color.fromRGBO(237, 245, 255, 1), |
|||
), |
|||
), |
|||
Expanded( |
|||
child: Container( |
|||
height: 13.w, |
|||
color: const Color.fromRGBO(255, 237, 255, 1), |
|||
), |
|||
), |
|||
], |
|||
), |
|||
), |
|||
Positioned( |
|||
child: Center( |
|||
child: Transform( |
|||
transform: Matrix4.skewX(0.6), |
|||
child: Container(width: 20.w, height: 13.w, color: Colors.white,), |
|||
), |
|||
), |
|||
) |
|||
], |
|||
), |
|||
Row( |
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|||
children: [ |
|||
Row( |
|||
children: [ |
|||
Text( |
|||
"男", |
|||
style: TextStyle( |
|||
fontSize: 13.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"0人", |
|||
style: TextStyle( |
|||
fontSize: 13.w, |
|||
color: const Color.fromRGBO(237, 245, 255, 1), |
|||
), |
|||
), |
|||
], |
|||
), |
|||
Row( |
|||
children: [ |
|||
Text( |
|||
"女", |
|||
style: TextStyle( |
|||
fontSize: 13.w, |
|||
color: const Color.fromRGBO(144, 144, 144, 1) |
|||
), |
|||
), |
|||
Text( |
|||
"0人", |
|||
style: TextStyle( |
|||
fontSize: 13.w, |
|||
color: const Color.fromRGBO(255, 237, 255, 1), |
|||
), |
|||
), |
|||
], |
|||
), |
|||
], |
|||
), |
|||
], |
|||
), |
|||
), |
|||
Image.network( |
|||
"https://dating-agency-test.oss-accelerate.aliyuncs.com/09B987965731.jpg", |
|||
width: 345.w, |
|||
fit: BoxFit.cover, |
|||
) |
|||
], |
|||
), |
|||
), |
|||
), |
|||
), |
|||
), |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,67 @@ |
|||
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
|||
import 'package:dating_touchme_app/generated/assets.dart'; |
|||
import 'package:dating_touchme_app/model/home/marriage_data.dart'; |
|||
import 'package:dating_touchme_app/pages/home/user_information_page.dart'; |
|||
import 'package:flutter/material.dart'; |
|||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|||
import 'package:get/get.dart'; |
|||
|
|||
class MatchmakerItem extends StatefulWidget { |
|||
final MarriageData item; |
|||
const MatchmakerItem({super.key, required this.item}); |
|||
|
|||
@override |
|||
State<MatchmakerItem> createState() => _MatchmakerItemState(); |
|||
} |
|||
|
|||
class _MatchmakerItemState extends State<MatchmakerItem> { |
|||
@override |
|||
Widget build(BuildContext context) { |
|||
return Stack( |
|||
clipBehavior: Clip.none, |
|||
children: [ |
|||
ClipRRect( |
|||
borderRadius: BorderRadius.all(Radius.circular(40.w)), |
|||
child: widget.item.profilePhoto != "" ? Image.network( |
|||
widget.item.profilePhoto, |
|||
width: 40.w, |
|||
height: 40.w, |
|||
fit: BoxFit.cover, |
|||
) : Image.asset( |
|||
Assets.imagesUserAvatar, |
|||
width: 40.w, |
|||
height: 40.w, |
|||
fit: BoxFit.cover, |
|||
), |
|||
), |
|||
Positioned( |
|||
left: -3.w, |
|||
bottom: -3.w, |
|||
child: Container( |
|||
width: 46.w, |
|||
height: 14.w, |
|||
padding: EdgeInsets.symmetric(horizontal: 5.w), |
|||
decoration: BoxDecoration( |
|||
borderRadius: BorderRadius.all(Radius.circular(14.w)), |
|||
color: const Color.fromRGBO(0, 0, 0, .4) |
|||
), |
|||
child: Center( |
|||
child: Text( |
|||
widget.item.nickName, |
|||
maxLines: 1, |
|||
overflow: TextOverflow.ellipsis, |
|||
style: TextStyle( |
|||
fontSize: 9.w, |
|||
fontWeight: FontWeight.w500, |
|||
color: Colors.white |
|||
), |
|||
), |
|||
), |
|||
), |
|||
) |
|||
], |
|||
).onTap((){ |
|||
Get.to(() => UserInformationPage(miId: widget.item.miId, userId: widget.item.userId,)); |
|||
}); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save