news_list_page.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/internal/bbs/model/news_comm_entity.dart';
  4. import 'package:liftmanager/internal/bbs/presenter/news_list_presenter.dart';
  5. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  6. import 'package:liftmanager/mvp/base_page_state.dart';
  7. import 'package:liftmanager/res/resources.dart';
  8. import 'package:liftmanager/routers/fluro_navigator.dart';
  9. import 'package:liftmanager/utils/theme_utils.dart';
  10. import 'package:liftmanager/widgets/app_bar.dart';
  11. import 'package:liftmanager/widgets/my_refresh_list.dart';
  12. import 'package:liftmanager/widgets/state_layout.dart';
  13. import 'package:provider/provider.dart';
  14. import 'package:liftmanager/internal/bbs/bbs_router.dart';
  15. import 'package:liftmanager/net/api_service.dart';
  16. import 'dart:convert';
  17. import 'package:permission_handler/permission_handler.dart';
  18. // import 'package:amap_all_fluttify/amap_all_fluttify.dart';
  19. import 'package:liftmanager/utils/toast.dart';
  20. // import '../news_router.dart';
  21. class NewsListPage extends StatefulWidget{
  22. @override
  23. State<StatefulWidget> createState() {
  24. return NewsListState();
  25. }
  26. }
  27. class NewsListState extends BasePageState<NewsListPage, NewsListPresenter> {
  28. BaseListProvider<NewsItem> provider = BaseListProvider<NewsItem>();
  29. String _keyword="";
  30. int _page = 1;
  31. @override
  32. void initState() {
  33. /// 默认为加载中状态,本页面场景默认为空
  34. provider.setStateTypeNotNotify(StateType.loading);
  35. super.initState();
  36. _onRefresh();
  37. }
  38. @override
  39. Widget build(BuildContext context) {
  40. return ChangeNotifierProvider<BaseListProvider<NewsItem>>(
  41. create: (_) => provider,
  42. child: Scaffold(
  43. appBar: MyAppBar(
  44. centerTitle: "新闻列表",
  45. ),
  46. body: Consumer<BaseListProvider<NewsItem>>(
  47. builder: (_, provider, __) {
  48. return MyListView(
  49. key: Key('order_search_list'),
  50. itemCount: provider.list.length,
  51. stateType: provider.stateType,
  52. onRefresh: _onRefresh,
  53. loadMore: _loadMore,
  54. hasMore: provider.hasMore,
  55. itemBuilder: (_, index){
  56. bool isDark = ThemeUtils.isDark(context);
  57. return InkWell(
  58. onTap: () {
  59. NavigatorUtils.push(context,
  60. "${BbsRouter.newsDetail}?id=${provider.list[index].id}");
  61. },
  62. child: Container(
  63. decoration: BoxDecoration(
  64. color: ThemeUtils.getTabsBg(context),
  65. border: Border(
  66. bottom: BorderSide(
  67. width: 0.5, color: Colours.line)),
  68. ),
  69. padding: const EdgeInsets.all(15),
  70. child: Column(
  71. crossAxisAlignment:
  72. CrossAxisAlignment.start,
  73. mainAxisAlignment: MainAxisAlignment.start,
  74. children: <Widget>[
  75. Text(
  76. "${provider.list[index].title}",
  77. style: TextStyle(fontSize: 15,color:isDark?Colours.dark_text:Colours.text),
  78. // overflow: TextOverflow.ellipsis,
  79. ),
  80. Gaps.vGap12,
  81. Text(
  82. "${provider.list[index].releaseUser}·阅读${provider.list[index].lookNum}次·点赞${provider.list[index].likeNum}",
  83. style: TextStyle(
  84. fontSize: 11,
  85. color: Colours.text_gray),
  86. )
  87. ],
  88. ),
  89. ),
  90. );
  91. },
  92. );
  93. }
  94. ),
  95. ),
  96. );
  97. }
  98. Future _onRefresh() async {
  99. _page = 1;
  100. // await presenter.list(context,_keyword, _page,10,1, false);
  101. }
  102. Future _loadMore() async {
  103. _page++;
  104. // await presenter.list(context,_keyword, _page,10,1, false);
  105. }
  106. @override
  107. NewsListPresenter createPresenter() {
  108. return NewsListPresenter();
  109. }
  110. }