repair_select_lift_page.dart 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/internal/lift/lift_router.dart';
  3. import 'package:liftmanager/internal/lift/model/lift_list_entity.dart';
  4. import 'package:liftmanager/internal/repair/provider/repair_select_lift_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_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: MyAppBar(
  41. centerTitle: "电梯列表",
  42. ),
  43. body: Container(
  44. color: ThemeUtils.getBackgroundColor(context),
  45. child: Column(
  46. crossAxisAlignment: CrossAxisAlignment.start,
  47. children: <Widget>[
  48. Container(
  49. color: ThemeUtils.getTabsBg(context),
  50. padding:
  51. EdgeInsets.only(top: 10, bottom: 10, left: 15, right: 15),
  52. child: SearchBar(
  53. autofocus: false,
  54. hintText: "搜索电梯",
  55. onPressed: (text) {
  56. // if (text.isEmpty){
  57. // showToast("搜索团队名称不能为空!");
  58. // return;
  59. // }
  60. // FocusScope.of(context).unfocus();
  61. print(widget.projectId);
  62. _keyword = text;
  63. provider.setStateType(StateType.loading);
  64. _page = 1;
  65. presenter.searchLift(
  66. context, widget.projectId, _keyword, _page, true);
  67. },
  68. ),
  69. ),
  70. Expanded(
  71. flex: 1,
  72. child: p.Consumer<BaseListProvider<LiftListItem>>(
  73. builder: (_, provider, __) {
  74. return MyListView(
  75. key: Key('lift_list'),
  76. itemCount: provider.list.length,
  77. stateType: provider.stateType,
  78. onRefresh: _onRefresh,
  79. loadMore: _loadMore,
  80. // itemExtent: 67.0,
  81. hasMore: provider.hasMore,
  82. itemBuilder: (_, index) {
  83. return Container(
  84. margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
  85. decoration: BoxDecoration(
  86. color: isDark ? Colors.black : Colors.white,
  87. borderRadius: BorderRadius.circular(6.0),
  88. ),
  89. padding: const EdgeInsets.only(bottom: 10),
  90. child: Column(
  91. children: <Widget>[
  92. Container(
  93. decoration: BoxDecoration(
  94. border: Border(
  95. bottom: BorderSide(
  96. width: 0.5, color: Colours.text_gray_c),
  97. )),
  98. padding: EdgeInsets.only(left: 12),
  99. child: Row(
  100. children: <Widget>[
  101. Expanded(
  102. flex: 1,
  103. child: Text(
  104. provider.list[index].useCompanyCode,
  105. style: TextStyle(
  106. fontSize: 15,
  107. color: isDark
  108. ? Colours.dark_text
  109. : Colours.text,
  110. ),
  111. overflow: TextOverflow.ellipsis,
  112. softWrap: false, //单行显示
  113. )),
  114. MyButton(
  115. key: const Key('lift_list'),
  116. onPressed: () {
  117. NavigatorUtils.goBackWithParams(context, provider.list[index]);
  118. },
  119. height: 25,
  120. fontSize: 11,
  121. colors: [
  122. Colours.app_main,
  123. Colours.app_main
  124. ],
  125. borderWidth: 0.5,
  126. borderColor: Colours.app_main,
  127. text: "选择",
  128. )
  129. ],
  130. ),
  131. ),
  132. lineTxt("注册代码",
  133. "${provider.list[index].registrationCode}"),
  134. lineTxt(
  135. "电梯型号", "${provider.list[index].liftCode}"),
  136. lineTxt(
  137. "电梯类型", "${provider.list[index].liftTypeName}"),
  138. lineTxt(
  139. "电梯品牌", "${provider.list[index].liftBrand}")
  140. ],
  141. ),
  142. );
  143. },
  144. );
  145. }))
  146. ],
  147. ),
  148. ),
  149. ));
  150. }
  151. Widget lineTxt(title, value) {
  152. return Container(
  153. padding: EdgeInsets.only(left: 12, top: 5, right: 12),
  154. child: Row(
  155. children: <Widget>[
  156. Text("${title}",
  157. style: TextStyle(fontSize: 13, color: Colours.dark_text_gray)),
  158. Expanded(
  159. flex: 1,
  160. child: Text(
  161. "${value}",
  162. textAlign: TextAlign.right,
  163. style: TextStyle(fontSize: 13, color: Colours.dark_text_gray),
  164. ),
  165. )
  166. ],
  167. ),
  168. );
  169. }
  170. Future _onRefresh() async {
  171. _page = 1;
  172. await presenter.searchLift(
  173. context, widget.projectId, _keyword, _page, false);
  174. }
  175. Future _loadMore() async {
  176. _page++;
  177. await presenter.searchLift(
  178. context, widget.projectId, _keyword, _page, false);
  179. }
  180. @override
  181. RepairSelectLiftPresenter createPresenter() {
  182. return RepairSelectLiftPresenter();
  183. }
  184. }