activity_card_widget.dart 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import 'package:news_app/model/activity_model.dart';
  4. import 'package:news_app/ui/activity/activity_detail_page.dart';
  5. import 'package:news_app/widget/load_image.dart';
  6. import '../../constant/color_res.dart';
  7. import '../../constant/size_res.dart';
  8. import '../../util/time_util.dart';
  9. import '../../widget/my_txt.dart';
  10. import '../../widget/tag_widget.dart';
  11. /// @author: bo.zeng
  12. /// @email: cnhbwds@gmail.com
  13. /// @date: 2025 2025/4/9 16:00
  14. /// @description:
  15. class ActivityCardWidget extends StatelessWidget {
  16. final ActivityModelRecord cellData;
  17. const ActivityCardWidget({super.key, required this.cellData});
  18. @override
  19. Widget build(BuildContext context) {
  20. return Container(
  21. padding: EdgeInsets.all(horizontalPadding),
  22. decoration: BoxDecoration(
  23. borderRadius: BorderRadius.circular(8.r),
  24. color: Colors.white,
  25. ),
  26. child: Column(
  27. children: [
  28. Row(
  29. children: [
  30. Flexible(
  31. flex: 4,
  32. child: ClipRRect(
  33. borderRadius: BorderRadius.circular(8.r),
  34. child: LoadImage(
  35. cellData.image ?? '',
  36. height: 90.h,
  37. width: 116.w,
  38. holderImg: 'none',
  39. fit: BoxFit.cover,
  40. ),
  41. ),
  42. ),
  43. SizedBox(width: 10.w),
  44. Flexible(
  45. flex: 6,
  46. child: SizedBox(
  47. height: 68.h,
  48. child: Column(
  49. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  50. crossAxisAlignment: CrossAxisAlignment.start,
  51. children: [
  52. myTxt(
  53. text: cellData.title ?? "金融赋能镇江高质量发展大会",
  54. fontSize: 12.sp,
  55. fontWeight: FontWeight.bold,
  56. color: Colors.black,
  57. ),
  58. SizedBox(height: 15.h),
  59. Row(
  60. children: [
  61. Icon(
  62. Icons.timer_outlined,
  63. color: color666666,
  64. size: 12.w,
  65. ),
  66. SizedBox(width: 2.w),
  67. Expanded(
  68. child: myTxt(
  69. text:
  70. "${TimeUtil.formatTime(cellData.activityStartTime)} / ${TimeUtil.formatTime(cellData.activityEndTime)}",
  71. fontSize: 10.sp,
  72. fontWeight: FontWeight.bold,
  73. color: color666666,
  74. ),
  75. ),
  76. ],
  77. ),
  78. Row(
  79. children: [
  80. Icon(
  81. Icons.location_on_outlined,
  82. color: color666666,
  83. size: 12.w,
  84. ),
  85. myTxt(
  86. text: cellData.activityLocation ?? "镇江市碧桂园宾馆金山楼金山厅",
  87. fontSize: 10.sp,
  88. fontWeight: FontWeight.bold,
  89. color: color666666,
  90. ),
  91. ],
  92. ),
  93. ],
  94. ),
  95. ),
  96. ),
  97. ],
  98. ),
  99. SizedBox(height: 10.h),
  100. Row(
  101. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  102. children: [
  103. Row(
  104. spacing: 5.w,
  105. children: [
  106. TagGradientWidget(
  107. size: Size(50.w, 20.h),
  108. gradientColor: [color6592FD, color85C3FD],
  109. child: myTxt(
  110. text: getRegisterStatus(cellData.registerStatus ?? ""),
  111. color: Colors.white,
  112. fontSize: 10.sp,
  113. ),
  114. ),
  115. myTxt(
  116. text: "限${cellData.registerLimit}人报名参加",
  117. color: color666666,
  118. fontSize: 10.sp,
  119. ),
  120. ],
  121. ),
  122. Container(
  123. padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 5.h),
  124. decoration: BoxDecoration(
  125. borderRadius: BorderRadius.circular(30.r),
  126. color: color6592FD,
  127. ),
  128. child: myTxt(
  129. text: "进入活动",
  130. color: Colors.white,
  131. fontSize: 10.sp,
  132. ),
  133. ),
  134. ],
  135. ),
  136. ],
  137. ),
  138. );
  139. }
  140. }