error_list.dart 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import 'dart:async';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:liftmanager/internal/bbs/model/error_model.dart';
  6. import 'package:liftmanager/internal/means/means_router.dart';
  7. import 'package:liftmanager/internal/means/presenter/error_list_presenter.dart';
  8. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  9. import 'package:liftmanager/mvp/base_page_state.dart';
  10. import 'package:liftmanager/res/iconfont.dart';
  11. import 'package:liftmanager/res/resources.dart';
  12. import 'package:liftmanager/routers/fluro_navigator.dart';
  13. import 'package:liftmanager/widgets/app_search_bar.dart';
  14. import 'package:liftmanager/widgets/my_refresh_list.dart';
  15. import 'package:liftmanager/widgets/state_layout.dart';
  16. import 'package:provider/provider.dart';
  17. class ErrorList extends StatefulWidget {
  18. ErrorList(this.id);
  19. final String id;
  20. @override
  21. ErrorListState createState() => ErrorListState();
  22. // State<StatefulWidget> createState() {
  23. // return ErrorListState();
  24. // }
  25. }
  26. class ErrorListState
  27. extends BasePageState<ErrorList, ErrorListPresenterSeconds> {
  28. // NewsDetailItem item = NewsDetailItem();
  29. BaseListProvider<ErrorDetailModel> provider =
  30. BaseListProvider<ErrorDetailModel>();
  31. int _page = 1;
  32. String searchWord;
  33. ScrollController _scrollController = new ScrollController();
  34. @override
  35. void initState() {
  36. provider.setStateTypeNotNotify(StateType.loading);
  37. super.initState();
  38. _onRefresh();
  39. }
  40. @override
  41. void dispose() {
  42. _scrollController.dispose();
  43. super.dispose();
  44. }
  45. @override
  46. Widget build(BuildContext context) {
  47. double width = MediaQuery.of(context).size.width;
  48. return ChangeNotifierProvider<BaseListProvider<ErrorDetailModel>>(
  49. create: (_) => provider,
  50. child: Scaffold(
  51. appBar: SearchAppBar2(
  52. onPressed: (text) {
  53. searchWord = text;
  54. _onRefresh();
  55. },
  56. ),
  57. body: Container(
  58. child: Column(
  59. children: <Widget>[
  60. Expanded(
  61. flex: 1,
  62. child: Consumer<BaseListProvider<ErrorDetailModel>>(
  63. builder: (_, provider, __) {
  64. return MyListView(
  65. key: Key('error_list'),
  66. itemCount: provider.list.length,
  67. stateType: provider.stateType,
  68. onRefresh: _onRefresh,
  69. loadMore: _loadMore,
  70. hasMore: provider.hasMore,
  71. itemBuilder: (_, index) {
  72. return GestureDetector(
  73. child: Container(
  74. padding: EdgeInsets.only(
  75. left: ScreenUtil().setWidth(10),
  76. right: ScreenUtil().setWidth(10),
  77. top: ScreenUtil().setHeight(10),
  78. bottom: ScreenUtil().setHeight(10)),
  79. decoration: BoxDecoration(
  80. border: Border(
  81. bottom: BorderSide(
  82. width: 0.5, color: Colours.line),
  83. ),
  84. ),
  85. child: Column(children: <Widget>[
  86. Container(
  87. padding: EdgeInsets.only(
  88. bottom: ScreenUtil().setHeight(5)),
  89. child: Row(
  90. mainAxisAlignment:
  91. MainAxisAlignment.spaceBetween,
  92. children: <Widget>[
  93. Container(
  94. padding: EdgeInsets.only(
  95. right: ScreenUtil().setWidth(10)),
  96. child: ClipRRect(
  97. borderRadius: BorderRadius.circular(
  98. ScreenUtil().setWidth(18)),
  99. child: Container(
  100. width: ScreenUtil().setWidth(36),
  101. height: ScreenUtil().setWidth(36),
  102. color: Color(0xffFAF7FA),
  103. // padding: EdgeInsets.only(right:10),
  104. child: Icon(
  105. Iconfont.guzhang,
  106. size: 18.0,
  107. color: Color(0xffFD9900),
  108. ),
  109. ),
  110. ),
  111. ),
  112. Expanded(
  113. child: Text(
  114. provider.list[index].code ?? '',
  115. textAlign: TextAlign.left,
  116. style: TextStyle(
  117. fontSize: 14,
  118. color: Color(0xff333333),
  119. ),
  120. ),
  121. ),
  122. Icon(
  123. Iconfont.gengduo,
  124. size: 16,
  125. color: Color(0xffcccccc),
  126. ),
  127. ],
  128. ),
  129. ),
  130. ]),
  131. ),
  132. onTap: () {
  133. NavigatorUtils.push(context,
  134. "${MeansRouter.errorDetail}?id=${provider.list[index].id.toString()}");
  135. },
  136. );
  137. },
  138. );
  139. }))
  140. ],
  141. ))));
  142. }
  143. Future _onRefresh() async {
  144. _page = 1;
  145. await presenter.getErrorList(int.parse(widget.id), _page,
  146. searchWord: searchWord);
  147. }
  148. Future _loadMore() async {
  149. _page++;
  150. await presenter.getErrorList(int.parse(widget.id), _page,
  151. searchWord: searchWord);
  152. }
  153. @override
  154. ErrorListPresenterSeconds createPresenter() {
  155. return ErrorListPresenterSeconds();
  156. }
  157. }