my_video.dart 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/internal/wode/wode_router.dart';
  3. import 'package:liftmanager/res/gaps.dart';
  4. import 'package:liftmanager/net/api_service.dart';
  5. import 'package:liftmanager/utils/toast.dart';
  6. import 'package:liftmanager/widgets/app_bar.dart';
  7. import 'package:liftmanager/internal/search/search_router.dart';
  8. import 'package:liftmanager/widgets/app_search_bar.dart';
  9. import 'package:liftmanager/res/resources.dart';
  10. import 'package:liftmanager/routers/fluro_navigator.dart';
  11. import 'package:liftmanager/widgets/load_image.dart';
  12. import 'package:liftmanager/widgets/bbs_content.dart';
  13. import 'package:liftmanager/internal/bbs/presenter/video_list_presenter.dart';
  14. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  15. import 'package:liftmanager/internal/bbs/model/mix_model.dart';
  16. import 'package:liftmanager/widgets/state_layout.dart';
  17. import 'package:liftmanager/widgets/my_refresh_list.dart';
  18. import 'package:liftmanager/utils/url.dart';
  19. import 'package:flutter_spinkit/flutter_spinkit.dart';
  20. import 'package:liftmanager/mvp/base_page_state.dart';
  21. import 'package:provider/provider.dart';
  22. import 'package:flutter_screenutil/flutter_screenutil.dart';
  23. import 'package:liftmanager/common/common.dart';
  24. import 'package:flustars/flustars.dart' as flustars;
  25. import 'package:liftmanager/utils/fast_notification.dart';
  26. class MyVideo extends StatefulWidget {
  27. // QuestionList(this.index);
  28. // final String index;
  29. @override
  30. MyVideoState createState() => MyVideoState();
  31. }
  32. class MyVideoState extends BasePageState<MyVideo,MyVideoListPresenter>
  33. with AutomaticKeepAliveClientMixin{
  34. // NewsDetailItem item = NewsDetailItem();
  35. BaseListProvider<Records> provider = BaseListProvider<Records>();
  36. ScrollController _scrollController = new ScrollController();
  37. int _page = 1;
  38. String searchWord;
  39. @override
  40. void initState() {
  41. provider.setStateTypeNotNotify(StateType.loading);
  42. super.initState();
  43. _onRefresh();
  44. print(66666);
  45. FastNotification.addListener("initMyVideo",(initThisMyVideo){
  46. if(mounted){
  47. _onRefresh();
  48. }
  49. });
  50. }
  51. getCheckFlag(checkFlag){
  52. String str;
  53. if(checkFlag == 0){
  54. str = "已驳回";
  55. }else if (checkFlag == 1){
  56. str = "审核通过";
  57. }else if (checkFlag == 2){
  58. str = "待审核";
  59. }
  60. return str;
  61. }
  62. @override
  63. void dispose() {
  64. _scrollController.dispose();
  65. super.dispose();
  66. }
  67. @override
  68. Widget build(BuildContext context) {
  69. double width = MediaQuery.of(context).size.width;
  70. return
  71. ChangeNotifierProvider<BaseListProvider<Records>>(
  72. create: (_) => provider,
  73. child: Scaffold(
  74. appBar: SearchAppBar2(
  75. searchWidth:width*0.7,
  76. onPressed: (text) {
  77. searchWord = text;
  78. _onRefresh();
  79. },
  80. actions: <Widget>[
  81. FlatButton(
  82. child: Text(
  83. "上传",
  84. style: TextStyle(
  85. color: Colors.white, fontSize: ScreenUtil().setSp(15)),
  86. ),
  87. textColor: Colours.dark_text,
  88. highlightColor: Colors.transparent,
  89. onPressed: () {
  90. // NavigatorUtils.push(context, BbsRouter.videoUpload);
  91. NavigatorUtils.push(context, "${WodeRouter.videoUpload}?id=");
  92. },
  93. )
  94. ],
  95. ),
  96. body: Container(
  97. child:Stack(
  98. children: <Widget>[
  99. Column(
  100. children: <Widget>[
  101. Expanded(
  102. flex: 1,
  103. child: Consumer<BaseListProvider<Records>>(
  104. builder: (_, provider, __) {
  105. return MyListView(
  106. key: Key('video_list'),
  107. itemCount: provider.list.length,
  108. stateType: provider.stateType,
  109. onRefresh: _onRefresh,
  110. pageSize:10,
  111. loadMore: _loadMore,
  112. hasMore: provider.hasMore,
  113. itemBuilder: (_, index) {
  114. return GestureDetector(
  115. child: Container(
  116. padding: EdgeInsets.only(
  117. left: ScreenUtil().setWidth(15),
  118. // right: ScreenUtil().setWidth(15),
  119. top: ScreenUtil().setHeight(10),
  120. bottom: ScreenUtil().setHeight(10)),
  121. decoration: BoxDecoration(
  122. border: Border(
  123. bottom: BorderSide(
  124. width: 0.5, color: Colours.line),
  125. ),
  126. ),
  127. child:
  128. Row(
  129. crossAxisAlignment: CrossAxisAlignment.start,
  130. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  131. children: <Widget>[
  132. Container(
  133. height: width*0.24,
  134. child: Column(
  135. crossAxisAlignment: CrossAxisAlignment.start,
  136. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  137. children: <Widget>[
  138. Container(
  139. width:width*0.5,
  140. child: Text(
  141. "${provider.list[index].title??""}",
  142. style: TextStyle(
  143. fontWeight: FontWeight.w600,
  144. color: Color(0xff222222),
  145. fontSize: ScreenUtil().setSp(17)),
  146. textAlign: TextAlign.start,
  147. maxLines: 2,
  148. overflow: TextOverflow.ellipsis,
  149. ),
  150. ),
  151. Row(
  152. children: <Widget>[
  153. Container(
  154. width:width*0.18,
  155. child: Text(
  156. "${provider.list[index].brandName??""}",
  157. style: TextStyle(
  158. color: Color(0xff999999),
  159. fontSize: ScreenUtil().setSp(14)),
  160. textAlign: TextAlign.start,
  161. maxLines: 1,
  162. overflow: TextOverflow.ellipsis,
  163. ),
  164. ),
  165. SizedBox(
  166. width:5
  167. ),
  168. Container(
  169. width: width*0.3,
  170. child: Row(
  171. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  172. children: <Widget>[
  173. Container(
  174. width: width*0.15,
  175. child: Text(
  176. "${provider.list[index].likeNum??"0"}人点赞",
  177. style: TextStyle(
  178. color: Color(0xff999999),
  179. fontSize: ScreenUtil().setSp(14)),
  180. textAlign: TextAlign.start,
  181. maxLines: 1,
  182. overflow: TextOverflow.ellipsis,
  183. ),
  184. ),
  185. Text(
  186. provider.list[index].checkFlag!=null?getCheckFlag(provider.list[index].checkFlag):"",
  187. style: TextStyle(
  188. color: Color(0xff999999),
  189. fontSize: ScreenUtil().setSp(14)),
  190. textAlign: TextAlign.start,
  191. ),
  192. ],
  193. ),
  194. )
  195. ],
  196. )
  197. ]),
  198. ),
  199. Container(
  200. padding: EdgeInsets.only(right:10),
  201. child: Stack(
  202. children: <Widget>[
  203. ClipRRect(
  204. borderRadius:
  205. BorderRadius.circular(1),
  206. child: Container(
  207. child: LoadNetworkImage(
  208. // imgFontUrl +
  209. // provider.list[index].cover,
  210. provider.list[index].cover,
  211. width: width*0.38,
  212. height: width*0.24,
  213. isWater: true,
  214. ),
  215. ),
  216. ),
  217. Positioned(
  218. left: width*0.17,
  219. top: width*0.08,
  220. child: Icon(
  221. IconData(0xe607,
  222. fontFamily: "myfont"),
  223. size: 26.0,
  224. color: Colors.white,
  225. ),
  226. )
  227. ],
  228. )),
  229. ],
  230. )
  231. ),
  232. onTap: () {
  233. NavigatorUtils.push(context,
  234. "${WodeRouter.videoDetail}?id=${provider.list[index].id.toString()}");
  235. },
  236. );
  237. },
  238. );
  239. }))
  240. ],
  241. ),
  242. ],
  243. )
  244. )
  245. )
  246. );
  247. }
  248. Future _onRefresh() async {
  249. _page = 1;
  250. await presenter.getVideoList( _page,int.parse(flustars.SpUtil.getString(Constant.userId)),searchWord);
  251. }
  252. Future _loadMore() async {
  253. _page++;
  254. await presenter.getVideoList(_page,int.parse(flustars.SpUtil.getString(Constant.userId)),searchWord);
  255. }
  256. @override
  257. MyVideoListPresenter createPresenter() {
  258. return MyVideoListPresenter();
  259. }
  260. bool get wantKeepAlive => true;
  261. }