ugc_item.dart 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import 'package:eye_video/bizmodule/bizwidget/follow_list_head.dart';
  2. import 'package:eye_video/bizmodule/main/community/extension/ext_community.dart';
  3. import 'package:eye_video/bizmodule/main/community/model/community_model.dart';
  4. import 'package:eye_video/framework/uikit/layout/nine_layout.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:eye_video/framework/extension/image_compress.dart';
  7. class UgcFollowItem extends StatelessWidget {
  8. final HeaderData header;
  9. final CommunityData content;
  10. const UgcFollowItem({Key? key, this.header, this.content}) : super(key: key);
  11. @override
  12. Widget build(BuildContext context) {
  13. List<Widget> children = [];
  14. var headerItem = FollowListHead(
  15. title: header.issuerName,
  16. avatarUrl: header.icon.compress_value(),
  17. description: "${prettyTime(content.releaseTime)}发布",
  18. );
  19. children.add(headerItem);
  20. if (content.description != null && content.description.isNotEmpty) {
  21. var contentItem = Padding(
  22. padding: EdgeInsets.only(left: 16),
  23. child: Text(
  24. content.description,
  25. style: TextStyle(
  26. fontSize: 15,
  27. fontFamily: 'NotoSansHans-Regular',
  28. color: Color(0xff333333),
  29. ),
  30. ),
  31. );
  32. children.add(contentItem);
  33. }
  34. if (content.urls != null || content.urls.isNotEmpty) {
  35. var nineImages = Padding(
  36. padding: EdgeInsets.only(left: 8, top: 10, bottom: 10),
  37. child: NineLayout(
  38. width: MediaQuery.of(context).size.width - 34,
  39. children: content.urls.map((url) {
  40. return Container(
  41. decoration: ShapeDecoration(
  42. image: DecorationImage(
  43. image: NetworkImage(url.compress_value()),
  44. fit: BoxFit.cover,
  45. ),
  46. shape: RoundedRectangleBorder(
  47. borderRadius: BorderRadius.circular(5),
  48. ),
  49. ));
  50. }).toList(),
  51. count: content.urls.length,
  52. gap: 1,
  53. ),
  54. );
  55. children.add(nineImages);
  56. }
  57. if (content.tags != null && content.tags.isNotEmpty) {
  58. var tagItems = Container(
  59. padding: EdgeInsets.only(left: 10, top: 10),
  60. child: Wrap(
  61. children: content.tags
  62. .map((tag) => Container(
  63. decoration: BoxDecoration(
  64. color: Color(0xfff0f0f0),
  65. borderRadius: BorderRadius.all(Radius.circular(15)),
  66. ),
  67. padding:
  68. EdgeInsets.only(top: 2, bottom: 2, left: 10, right: 10),
  69. child: Text(
  70. tag.name,
  71. style: TextStyle(
  72. color: Colors.blue,
  73. fontSize: 12,
  74. ),
  75. ),
  76. ))
  77. .toList(),
  78. ),
  79. );
  80. children.add(tagItems);
  81. }
  82. if (content.consumption != null) {
  83. var consumptionItem = Padding(
  84. padding: EdgeInsets.only(top: 10, left: 15),
  85. child: Row(
  86. children: [
  87. Row(
  88. mainAxisAlignment: MainAxisAlignment.start,
  89. children: [
  90. Image.asset(
  91. 'assets/images/biz_app_icon_collection.png',
  92. width: 20,
  93. height: 20,
  94. ),
  95. Padding(
  96. padding: EdgeInsets.only(left: 3),
  97. child: Text("${content.consumption.realCollectionCount}"),
  98. ),
  99. ],
  100. ),
  101. Padding(
  102. padding: EdgeInsets.only(left: 30),
  103. child: Row(
  104. mainAxisAlignment: MainAxisAlignment.start,
  105. children: [
  106. Image.asset(
  107. 'assets/images/biz_app_icon_reply.png',
  108. width: 20,
  109. height: 20,
  110. ),
  111. Padding(
  112. padding: EdgeInsets.only(left: 3),
  113. child: Text("${content.consumption.replyCount}"),
  114. ),
  115. ],
  116. ),
  117. ),
  118. Padding(
  119. padding: EdgeInsets.only(left: 30),
  120. child: Row(
  121. mainAxisAlignment: MainAxisAlignment.start,
  122. children: [
  123. Image.asset(
  124. 'assets/images/biz_app_icon_share.png',
  125. width: 20,
  126. height: 20,
  127. ),
  128. Padding(
  129. padding: EdgeInsets.only(left: 3),
  130. child: Text("${content.consumption.shareCount}"),
  131. ),
  132. ],
  133. ),
  134. )
  135. ],
  136. ),
  137. );
  138. children.add(consumptionItem);
  139. }
  140. return Container(
  141. padding: EdgeInsets.all(10),
  142. child: Column(
  143. mainAxisAlignment: MainAxisAlignment.start,
  144. crossAxisAlignment: CrossAxisAlignment.start,
  145. children: children,
  146. ),
  147. );
  148. }
  149. }