news_home_page.dart 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. // import 'dart:async';
  2. // import 'package:amap_location_fluttify/amap_location_fluttify.dart';
  3. // import 'package:flustars/flustars.dart';
  4. // import 'package:flutter/material.dart';
  5. // import 'package:liftmanager/common/common.dart';
  6. // import 'package:liftmanager/common/user_db.dart';
  7. // import 'package:liftmanager/internal/account/model/user_entity.dart';
  8. // import 'package:liftmanager/internal/news/news_router.dart';
  9. // import 'package:liftmanager/internal/news/model/news_comm_entity.dart';
  10. // import 'package:liftmanager/internal/news/presenter/news_home_presenter.dart';
  11. // import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  12. // import 'package:liftmanager/internal/work/model/banner_entity.dart';
  13. // import 'package:liftmanager/internal/work/work_router.dart';
  14. // import 'package:liftmanager/mvp/base_page_state.dart';
  15. // import 'package:liftmanager/net/api_service.dart';
  16. // import 'package:liftmanager/res/resources.dart';
  17. // import 'package:liftmanager/routers/fluro_navigator.dart';
  18. // import 'package:liftmanager/utils/theme_utils.dart';
  19. // import 'package:liftmanager/utils/toast.dart';
  20. // import 'package:liftmanager/widgets/app_city_search_bar.dart';
  21. // import 'package:liftmanager/widgets/load_image.dart';
  22. // import 'package:liftmanager/widgets/my_refresh_list.dart';
  23. // import 'package:liftmanager/widgets/state_layout.dart';
  24. // import 'package:permission_handler/permission_handler.dart';
  25. // import 'package:provider/provider.dart';
  26. // import 'package:flustars/flustars.dart' as FlutterStars;
  27. // class NewsPage extends StatefulWidget {
  28. // @override
  29. // NewsPageState createState() => NewsPageState();
  30. // }
  31. // const timeout = const Duration(seconds: 5);
  32. // class NewsPageState extends BasePageState<NewsPage, NewsHomePresenter>
  33. // with TickerProviderStateMixin, AutomaticKeepAliveClientMixin ,AmapLocationDisposeMixin{
  34. // BaseListProvider<NewsItem> provider = BaseListProvider<NewsItem>();
  35. // TabController _tabController;
  36. // PageController _pageController = PageController();
  37. // int _index = 0;
  38. // Timer _timer;
  39. // int _page = 1;
  40. // List<BannerEntity> bannerList = [];
  41. // List<String> menuTitle = ["互动问答", "电梯保险", "知识学堂"];
  42. // List<String> menuImage = ["icon_tdgl", "icon_tdmp", "icon_tdmp"];
  43. // List<String> menuDesc = ["1548人发起最新求助", "最高赔付200万", "海量知识任你学"];
  44. // String cityName = "";
  45. // @override
  46. // void initState() {
  47. // /// 默认为加载中状态,本页面场景默认为空
  48. // provider.setStateTypeNotNotify(StateType.loading);
  49. // _tabController = TabController(length: 0, vsync: this);
  50. // _timer = Timer.periodic(timeout, _handleTimeout);
  51. // super.initState();
  52. // cityName = SpUtil.getString("cityName");
  53. // _onRefresh();
  54. // getBanner();
  55. // getUserInfo();
  56. // getLocation();
  57. // }
  58. // ///获取定位权限
  59. // Future<bool> requestPermission() async {
  60. // final permissions = await PermissionHandler()
  61. // .requestPermissions([PermissionGroup.location]);
  62. // if (permissions[PermissionGroup.location] == PermissionStatus.granted) {
  63. // return true;
  64. // } else {
  65. // toasts('需要定位权限!');
  66. // return false;
  67. // }
  68. // }
  69. // ///获取用户信息
  70. // void getUserInfo() {
  71. // ApiService(context: context).userInfo(
  72. // onSuccess: (data) {
  73. // if (!mounted) {
  74. // return;
  75. // }
  76. // if(data != null){
  77. // FlutterStars.SpUtil.putString(Constant.companyRole,data.roleCode);
  78. // }
  79. // },
  80. // onError: (code, msg) {
  81. // });
  82. // }
  83. // ///获取位置信息
  84. // getLocation() async {
  85. // if (await requestPermission()) {
  86. // var location = await AmapLocation.fetchLocation(needAddress:true);
  87. // cityName = location.city;
  88. // if(cityName == null){
  89. // cityName="";
  90. // }
  91. // SpUtil.putString("cityName", cityName);
  92. // SpUtil.putDouble("longitude", location.latLng.longitude);
  93. // SpUtil.putDouble("latitude", location.latLng.latitude);
  94. // setState(() {});
  95. // }
  96. // }
  97. // void getBanner() {
  98. // ApiService(context: context).getBanner(
  99. // onSuccess: (data) {
  100. // bannerList = data;
  101. // if (bannerList.length > 0) {
  102. // _pageController.jumpToPage(0);
  103. // _tabController =
  104. // TabController(length: bannerList.length, vsync: this);
  105. // setState(() {});
  106. // }
  107. // },
  108. // onError: (code, msg) {
  109. // showToast(msg);
  110. // });
  111. // }
  112. // _handleTimeout(Timer timer) {
  113. // _index++;
  114. // _pageController.animateToPage(
  115. // _index % (bannerList.length == 0 ? 1 : bannerList.length),
  116. // duration: Duration(milliseconds: 16),
  117. // curve: Curves.fastOutSlowIn,
  118. // );
  119. // }
  120. // void _onPageChanged(int index) {
  121. // _index = index;
  122. // _tabController.animateTo(index);
  123. // }
  124. // @override
  125. // void dispose() {
  126. // _tabController?.dispose();
  127. // _timer.cancel();
  128. // _pageController.dispose();
  129. // super.dispose();
  130. // }
  131. // @override
  132. // Widget build(BuildContext context) {
  133. // bool isDark = ThemeUtils.isDark(context);
  134. // return ChangeNotifierProvider<BaseListProvider<NewsItem>>(
  135. // create: (_) => provider,
  136. // child: Scaffold(
  137. // appBar: AppCitySearchAppBar(
  138. // city: "${cityName}",
  139. // ),
  140. // body: Container(
  141. // color: ThemeUtils.getBackgroundColor(context),
  142. // child: Column(
  143. // crossAxisAlignment: CrossAxisAlignment.start,
  144. // children: <Widget>[
  145. // Offstage(
  146. // offstage: bannerList.length == 0,
  147. // child: bannerWidget(),
  148. // ),
  149. // // Container(
  150. // //// color: Colors.white,
  151. // //// child: _ToolsItem(menuTitle, menuImage, menuDesc, (index) {
  152. // //// if (index == 0) {
  153. // ////// NavigatorUtils.push(context, AccountRouter.certificatePage);
  154. // //// } else if (index == 1) {
  155. // ////// NavigatorUtils.push(context, TeamRouter.teamUserPage);
  156. // //// }
  157. // //// }),
  158. // //// ),
  159. // Gaps.vGap10,
  160. // Container(
  161. // height: 45,
  162. // padding: EdgeInsets.only(left: 15, right: 15),
  163. // alignment: Alignment.centerLeft,
  164. // decoration: BoxDecoration(
  165. // color: isDark?Colours.dark_bg_color:Colors.white,
  166. // border: Border(
  167. // bottom: BorderSide(width: 0.5, color: Colours.line),
  168. // ),
  169. // ),
  170. // child: Row(
  171. // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  172. // children: <Widget>[
  173. // Container(
  174. // padding: EdgeInsets.only(left: 10),
  175. // decoration: BoxDecoration(
  176. // border: Border(
  177. // left: BorderSide(width: 3, color: Colours.app_main),
  178. // )),
  179. // child: Text(
  180. // "热门新闻",
  181. // style: TextStyles.textBold15,
  182. // ),
  183. // ),
  184. // GestureDetector(
  185. // onTap: () {
  186. // NavigatorUtils.push(
  187. // context, NewsRouter.newsTopList);
  188. // },
  189. // child: Text(
  190. // "更多",
  191. // style: TextStyle(
  192. // fontSize: 13, color: Color(0xFF666666)),
  193. // )),
  194. // ],
  195. // ),
  196. // ),
  197. // Expanded(
  198. // flex: 1,
  199. // child: Consumer<BaseListProvider<NewsItem>>(
  200. // builder: (_, provider, __) {
  201. // return MyListView(
  202. // itemCount: provider.list.length,
  203. // stateType: provider.stateType,
  204. // onRefresh: _onRefresh,
  205. // loadMore: _loadMore,
  206. // // itemExtent: 67.0,
  207. // hasMore: provider.hasMore,
  208. // itemBuilder: (_, index) {
  209. // var item = provider.list[index];
  210. // return InkWell(
  211. // onTap: () {
  212. // NavigatorUtils.push(context,
  213. // "${NewsRouter.newsDetail}?id=${item.id}");
  214. // },
  215. // child: Container(
  216. // decoration: BoxDecoration(
  217. // color: isDark?Colours.dark_bg_color:Colors.white,
  218. // border: Border(
  219. // bottom: BorderSide(
  220. // width: 0.5, color: Colours.line)),
  221. // ),
  222. // padding: const EdgeInsets.all(15),
  223. // child: Column(
  224. // crossAxisAlignment: CrossAxisAlignment.start,
  225. // mainAxisAlignment: MainAxisAlignment.start,
  226. // children: <Widget>[
  227. // Text(
  228. // "${item.title}",
  229. // style: TextStyle(fontSize: 15,color: isDark?Colours.dark_text:Colours.text),
  230. // // overflow: TextOverflow.ellipsis,
  231. // ),
  232. // Gaps.vGap12,
  233. // Text(
  234. // "${item.releaseUser}·阅读${item.lookNum}次·点赞${item.likeNum}",
  235. // style: TextStyle(
  236. // fontSize: 11, color: Colours.text_gray),
  237. // )
  238. // ],
  239. // ),
  240. // ),
  241. // );
  242. // },
  243. // );
  244. // }))
  245. // ],
  246. // ),
  247. // ),
  248. // ));
  249. // }
  250. // Widget bannerWidget() {
  251. // return Container(
  252. // height: 160,
  253. // child: Stack(
  254. // children: <Widget>[
  255. // PageView(
  256. // children: bannerList.map((item) {
  257. // return GestureDetector(
  258. // onTap: (){
  259. // if(item.url.length>0){
  260. // NavigatorUtils.push(context, "${WorkRouter.webview}?title="+Uri.encodeComponent("详情")+"&url="+Uri.encodeComponent(item.url));
  261. // }
  262. // },
  263. // child: Image.network(
  264. // item.image,
  265. // fit: BoxFit.fill, //使照片占满整个屏幕
  266. // ),
  267. // );
  268. // }).toList(),
  269. // onPageChanged: _onPageChanged,
  270. // controller: _pageController,
  271. // ),
  272. // Align(
  273. // alignment: Alignment(0.0, 0.9),
  274. // child: TabPageSelector(
  275. // color: Colors.white,
  276. // selectedColor: Colours.app_main,
  277. // controller: _tabController,
  278. // ),
  279. // ),
  280. // ],
  281. // ));
  282. // }
  283. // Widget lineTxt(title, value) {
  284. // return Container(
  285. // padding: EdgeInsets.only(left: 12, top: 5, right: 12),
  286. // child: Row(
  287. // children: <Widget>[
  288. // Text("${title}",
  289. // style: TextStyle(fontSize: 13, color: Colours.dark_text_gray)),
  290. // Expanded(
  291. // flex: 1,
  292. // child: Text(
  293. // "${value}",
  294. // textAlign: TextAlign.right,
  295. // style: TextStyle(fontSize: 13, color: Colours.dark_text_gray),
  296. // ),
  297. // )
  298. // ],
  299. // ),
  300. // );
  301. // }
  302. // Future _onRefresh() async {
  303. // _page = 1;
  304. // await presenter.newsList(context, _page, 1, "", cityName);
  305. // }
  306. // Future _loadMore() async {
  307. // _page++;
  308. // await presenter.newsList(context, _page, 1, "", cityName);
  309. // }
  310. // @override
  311. // NewsHomePresenter createPresenter() {
  312. // return NewsHomePresenter();
  313. // }
  314. // @override
  315. // bool get wantKeepAlive => true;
  316. // }
  317. // class _ToolsItem extends StatelessWidget {
  318. // _ToolsItem(this.titles, this.imgs, this.desc, this.onTap, {Key key})
  319. // : super(key: key);
  320. // List<String> titles;
  321. // List<String> imgs;
  322. // List<String> desc;
  323. // Function onTap;
  324. // @override
  325. // Widget build(BuildContext context) {
  326. // return GridView.builder(
  327. // shrinkWrap: true,
  328. // padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
  329. // physics: NeverScrollableScrollPhysics(),
  330. // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  331. // crossAxisCount: 3, childAspectRatio: 0.9, crossAxisSpacing: 2),
  332. // itemCount: titles.length,
  333. // itemBuilder: (_, index) {
  334. // return InkWell(
  335. // child: Column(
  336. // mainAxisAlignment: MainAxisAlignment.center,
  337. // children: <Widget>[
  338. // LoadAssetImage(
  339. // "work/${imgs[index]}",
  340. // width: 45.0,
  341. // height: 45,
  342. // ),
  343. // Gaps.vGap10,
  344. // Text(
  345. // titles[index],
  346. // style: TextStyles.textSize14,
  347. // ),
  348. // Gaps.vGap10,
  349. // Text(
  350. // desc[index],
  351. // style: TextStyles.textGray10,
  352. // )
  353. // ],
  354. // ),
  355. // onTap: () {
  356. // onTap(index);
  357. // });
  358. // },
  359. // );
  360. // }
  361. // }