repair_select_lift_page.dart 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/internal/lift/model/lift_list_entity.dart';
  3. import 'package:liftmanager/internal/repair/provider/repair_select_lift_presenter.dart';
  4. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  5. import 'package:liftmanager/mvp/base_page_state.dart';
  6. import 'package:liftmanager/res/resources.dart';
  7. import 'package:liftmanager/routers/fluro_navigator.dart';
  8. import 'package:liftmanager/utils/theme_utils.dart';
  9. import 'package:liftmanager/widgets/app_bar.dart';
  10. import 'package:liftmanager/widgets/app_search_bar.dart';
  11. import 'package:liftmanager/widgets/my_button.dart';
  12. import 'package:liftmanager/widgets/my_refresh_list.dart';
  13. import 'package:liftmanager/widgets/search_bar.dart';
  14. import 'package:liftmanager/widgets/state_layout.dart';
  15. import 'package:provider/provider.dart' as p;
  16. class RepairSelectLiftPage extends StatefulWidget {
  17. RepairSelectLiftPage(this.projectId);
  18. final String projectId;
  19. @override
  20. RepairSelectLiftPageState createState() => RepairSelectLiftPageState();
  21. }
  22. class RepairSelectLiftPageState
  23. extends BasePageState<RepairSelectLiftPage, RepairSelectLiftPresenter> {
  24. BaseListProvider<LiftListItem> provider = BaseListProvider<LiftListItem>();
  25. String _keyword = "";
  26. int _page = 1;
  27. @override
  28. void initState() {
  29. /// 默认为加载中状态,本页面场景默认为空
  30. provider.setStateTypeNotNotify(StateType.loading);
  31. super.initState();
  32. _onRefresh();
  33. }
  34. @override
  35. Widget build(BuildContext context) {
  36. bool isDark = ThemeUtils.isDark(context);
  37. return p.ChangeNotifierProvider<BaseListProvider<LiftListItem>>(
  38. create: (_) => provider,
  39. child: Scaffold(
  40. appBar: SearchAppBar2(
  41. backgroundColor: Colors.white,
  42. onPressed: (text) {
  43. print(widget.projectId);
  44. _keyword = text;
  45. provider.setStateType(StateType.loading);
  46. _page = 1;
  47. presenter.searchLift(
  48. context, widget.projectId, _keyword, _page, true);
  49. },),
  50. body: Container(
  51. color: ThemeUtils.getBackgroundColor(context),
  52. child: Column(
  53. crossAxisAlignment: CrossAxisAlignment.start,
  54. children: <Widget>[
  55. // Container(
  56. // color: ThemeUtils.getTabsBg(context),
  57. // padding:
  58. // EdgeInsets.only(top: 10, bottom: 10, left: 15, right: 15),
  59. // child: SearchBar(
  60. // autofocus: false,
  61. // hintText: "搜索电梯",
  62. // onPressed: (text) {
  63. // // if (text.isEmpty){
  64. // // showToast("搜索团队名称不能为空!");
  65. // // return;
  66. // // }
  67. // // FocusScope.of(context).unfocus();
  68. // print(widget.projectId);
  69. // _keyword = text;
  70. // provider.setStateType(StateType.loading);
  71. // _page = 1;
  72. // presenter.searchLift(
  73. // context, widget.projectId, _keyword, _page, true);
  74. // },
  75. // ),
  76. // ),
  77. Expanded(
  78. flex: 1,
  79. child: p.Consumer<BaseListProvider<LiftListItem>>(
  80. builder: (_, provider, __) {
  81. return MyListView(
  82. key: Key('lift_list'),
  83. itemCount: provider.list.length,
  84. stateType: provider.stateType,
  85. onRefresh: _onRefresh,
  86. loadMore: _loadMore,
  87. // itemExtent: 67.0,
  88. hasMore: provider.hasMore,
  89. itemBuilder: (_, index) {
  90. return Container(
  91. margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
  92. decoration: BoxDecoration(
  93. color: isDark ? Colors.black : Colors.white,
  94. borderRadius: BorderRadius.circular(6.0),
  95. ),
  96. padding: const EdgeInsets.only(bottom: 10),
  97. child: Column(
  98. children: <Widget>[
  99. Container(
  100. decoration: BoxDecoration(
  101. border: Border(
  102. bottom: BorderSide(
  103. width: 0.5, color: Colours.text_gray_c),
  104. )),
  105. padding: EdgeInsets.only(left: 12),
  106. child: Row(
  107. children: <Widget>[
  108. Expanded(
  109. flex: 1,
  110. child: Text(
  111. provider.list[index].useCompanyCode,
  112. style: TextStyle(
  113. fontSize: 15,
  114. color: isDark
  115. ? Colours.dark_text
  116. : Colours.text,
  117. ),
  118. overflow: TextOverflow.ellipsis,
  119. softWrap: false, //单行显示
  120. )),
  121. MyButton(
  122. key: const Key('lift_list'),
  123. onPressed: () {
  124. NavigatorUtils.goBackWithParams(context, provider.list[index]);
  125. },
  126. height: 25,
  127. fontSize: 11,
  128. colors: [
  129. Colours.app_main,
  130. Colours.app_main
  131. ],
  132. borderWidth: 0.5,
  133. borderColor: Colours.app_main,
  134. text: "选择电梯",
  135. )
  136. ],
  137. ),
  138. ),
  139. lineTxt("注册代码",
  140. "${provider.list[index].registrationCode}"),
  141. lineTxt(
  142. "电梯型号", "${provider.list[index].liftCode}"),
  143. lineTxt(
  144. "电梯类型", "${provider.list[index].liftTypeName}"),
  145. lineTxt(
  146. "电梯品牌", "${provider.list[index].liftBrand}")
  147. ],
  148. ),
  149. );
  150. },
  151. );
  152. }))
  153. ],
  154. ),
  155. ),
  156. ));
  157. }
  158. Widget lineTxt(title, value) {
  159. return Container(
  160. padding: EdgeInsets.only(left: 12, top: 5, right: 12),
  161. child: Row(
  162. children: <Widget>[
  163. Text("${title}",
  164. style: TextStyle(fontSize: 13, color: Colours.dark_text_gray)),
  165. Expanded(
  166. flex: 1,
  167. child: Text(
  168. "${value}",
  169. textAlign: TextAlign.right,
  170. style: TextStyle(fontSize: 13, color: Colours.dark_text_gray),
  171. ),
  172. )
  173. ],
  174. ),
  175. );
  176. }
  177. Future _onRefresh() async {
  178. _page = 1;
  179. await presenter.searchLift(
  180. context, widget.projectId, _keyword, _page, false);
  181. }
  182. Future _loadMore() async {
  183. _page++;
  184. await presenter.searchLift(
  185. context, widget.projectId, _keyword, _page, false);
  186. }
  187. @override
  188. RepairSelectLiftPresenter createPresenter() {
  189. return RepairSelectLiftPresenter();
  190. }
  191. }