error_list.dart 6.7 KB

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