device_manage_page.dart 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. import 'package:deus_app/common/style/TitleBar.dart';
  2. import 'package:deus_app/common/style/gsy_style.dart';
  3. import 'package:deus_app/common/utils/ConstantString.dart';
  4. import 'package:deus_app/common/utils/DioUtil.dart';
  5. import 'package:deus_app/common/utils/ToastUtils.dart';
  6. import 'package:deus_app/generated/json/equipment_info_entity_helper.dart';
  7. import 'package:deus_app/generated/json/equipment_list_entity_helper.dart';
  8. import 'package:deus_app/model/equipment_info_entity.dart';
  9. import 'package:deus_app/model/equipment_list_entity.dart';
  10. import 'package:deus_app/page/device/device_manage_detail_page.dart';
  11. import 'package:deus_app/widget/MyDrawer.dart';
  12. import 'package:flutter/cupertino.dart';
  13. import 'package:flutter/material.dart';
  14. import 'package:pull_to_refresh/pull_to_refresh.dart';
  15. class DeviceManagePage extends StatefulWidget {
  16. static var routeName = '/DeviceManagePage';
  17. const DeviceManagePage({super.key});
  18. @override
  19. State createState() {
  20. return _DeviceManage();
  21. }
  22. }
  23. class _DeviceManage extends State<DeviceManagePage> {
  24. String deviceNum = "0";
  25. String _device = '', _username = '';
  26. dynamic _satus, _isEnabled;
  27. final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  28. RefreshController _refreshController =
  29. RefreshController(initialRefresh: false);
  30. List<EquipmentListDataEquipmentVOS> equipmentVOS =
  31. <EquipmentListDataEquipmentVOS>[];
  32. void _onRefresh() async {
  33. // monitor network fetch
  34. await Future.delayed(Duration(milliseconds: 1000));
  35. // if failed,use refreshFailed()
  36. _refreshController.refreshCompleted();
  37. }
  38. void _onLoading() async {
  39. // monitor network fetch
  40. await Future.delayed(Duration(milliseconds: 1000));
  41. // if failed,use loadFailed(),if no data return,use LoadNodata()
  42. // items.add((items.length+1).toString());
  43. if (mounted) setState(() {});
  44. _refreshController.loadComplete();
  45. }
  46. @override
  47. void initState() {
  48. super.initState();
  49. equipmentList();
  50. }
  51. @override
  52. Widget build(BuildContext contexts) {
  53. return Scaffold(
  54. key: _scaffoldKey,
  55. appBar: TitleBar().drawAppBar(ConstantString.deviceManageText, () {
  56. _scaffoldKey.currentState?.openEndDrawer();
  57. }),
  58. backgroundColor: const Color(0xfff2f2f2),
  59. endDrawer: MyDrawer(
  60. callback:(String device, String name,dynamic stase,dynamic isEnabled){
  61. _device=device;
  62. _username=name;
  63. _satus=stase;
  64. _isEnabled=isEnabled;
  65. equipmentList();
  66. },
  67. ),
  68. //抽屉
  69. body: Column(
  70. children: [
  71. SizedBox(
  72. height: 10,
  73. ),
  74. Row(
  75. mainAxisAlignment: MainAxisAlignment.start,
  76. children: [
  77. SizedBox(
  78. width: 15,
  79. ),
  80. Text(ConstantString.deviceNum,
  81. style: GSYConstant.smallActionLightText),
  82. Text(deviceNum, style: GSYConstant.normalTextBigWhiteBold),
  83. ],
  84. ),
  85. Expanded(
  86. child: Container(
  87. // child: SmartRefresher(
  88. // enablePullDown: true,
  89. // enablePullUp: true,
  90. // header: WaterDropHeader(),
  91. // footer: CustomFooter(
  92. // builder: (BuildContext context, LoadStatus? mode) {
  93. // Widget body;
  94. // if (mode == LoadStatus.idle) {
  95. // body = Text("上拉加载");
  96. // } else if (mode == LoadStatus.loading) {
  97. // body = CupertinoActivityIndicator();
  98. // } else if (mode == LoadStatus.failed) {
  99. // body = Text("加载失败!点击重试!");
  100. // } else if (mode == LoadStatus.canLoading) {
  101. // body = Text("松手,加载更多!");
  102. // } else {
  103. // body = Text("没有更多数据了!");
  104. // }
  105. // return Container(
  106. // height: 55.0,
  107. // child: Center(child: body),
  108. // );
  109. // },
  110. // ),
  111. // controller: _refreshController,
  112. // onRefresh: _onRefresh,
  113. // onLoading: _onLoading,
  114. child: ListView.builder(
  115. itemCount: equipmentVOS.length,
  116. itemBuilder: (context, index) {
  117. return Container(
  118. margin: EdgeInsets.only(top: 12, left: 10, right: 10),
  119. padding: EdgeInsets.only(top: 12, bottom: 10),
  120. color: Colors.white,
  121. child: ListTile(
  122. title: Column(
  123. children: [
  124. Row(
  125. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  126. children: [
  127. Container(
  128. child: Text(
  129. equipmentVOS[index].showName,
  130. style: const TextStyle(
  131. color: Colors.black,
  132. fontSize: GSYConstant.middleTextWhiteSize,
  133. fontWeight: FontWeight.bold,
  134. ),
  135. ),
  136. ),
  137. Container(
  138. padding: EdgeInsets.only(
  139. top: 3, bottom: 3, left: 5, right: 5),
  140. child: Text(
  141. equipmentVOS[index].status == 0
  142. ? '在线'
  143. : equipmentVOS[index].status == 1
  144. ? '离线'
  145. : equipmentVOS[index].status == 2
  146. ? '未激活'
  147. : '未知',
  148. textAlign: TextAlign.right,
  149. style: TextStyle(
  150. color: equipmentVOS[index].status == 0
  151. ? Colors.blue
  152. : equipmentVOS[index].status == 1
  153. ? Colors.orange
  154. : equipmentVOS[index].status == 2
  155. ? Colors.red
  156. : Colors.black,
  157. fontSize: GSYConstant.minTextSize,
  158. ),
  159. ),
  160. decoration: BoxDecoration(
  161. border: new Border.all(
  162. color: equipmentVOS[index].status == 0
  163. ? Colors.blue
  164. : equipmentVOS[index].status == 1
  165. ? Colors.orange
  166. : equipmentVOS[index].status == 2
  167. ? Colors.red
  168. : Colors.black, //边框颜色
  169. width: 1.0, //边框粗细
  170. ),
  171. borderRadius: const BorderRadius.all(
  172. const Radius.circular(3.0)), //边框的弧度
  173. ),
  174. )
  175. ]),
  176. // SizedBox(
  177. // height: 12,
  178. // ),
  179. // Row(
  180. // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  181. // children: [
  182. // Container(
  183. // child: Text(
  184. // 'devicekey:',
  185. // style: TextStyle(
  186. // color: GSYColors.primaryLightValue,
  187. // fontSize: GSYConstant.middleTextWhiteSize,
  188. // ),
  189. // ),
  190. // ),
  191. // Container(
  192. // child: Text(
  193. // 'devicekey',
  194. // textAlign: TextAlign.right,
  195. // style: TextStyle(
  196. // color: GSYColors.primaryLightValue,
  197. // fontSize: GSYConstant.middleTextWhiteSize,
  198. // ),
  199. // ),
  200. // ),
  201. // ]),
  202. // SizedBox(
  203. // height: 10,
  204. // ),
  205. // Row(
  206. // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  207. // children: [
  208. // Container(
  209. // child: Text(
  210. // 'IMEI:',
  211. // style: TextStyle(
  212. // color: GSYColors.primaryLightValue,
  213. // fontSize: GSYConstant.middleTextWhiteSize,
  214. // ),
  215. // ),
  216. // ),
  217. // Container(
  218. // child: Text(
  219. // 'IMEI',
  220. // textAlign: TextAlign.right,
  221. // style: TextStyle(
  222. // color: GSYColors.primaryLightValue,
  223. // fontSize: GSYConstant.middleTextWhiteSize,
  224. // ),
  225. // ),
  226. // ),
  227. // ]),
  228. SizedBox(
  229. height: 5,
  230. ),
  231. ],
  232. ),
  233. onTap: () {
  234. equipmentInfo(equipmentVOS[index].id);
  235. },
  236. ));
  237. },
  238. ),
  239. ))
  240. ],
  241. ),
  242. );
  243. }
  244. equipmentList() async {
  245. // LoadingDialogHelper.showLoading(context);
  246. var result = await DioUtil().request("equipment/equipmentList",
  247. method: DioMethod.post, data: {'index': 1, 'size': 50,'query':{'status':_satus,'name':_username,'isEnable':_isEnabled,'showName':_device}});
  248. EquipmentListEntity entity =
  249. equipmentListEntityFromJson(EquipmentListEntity(), result,);
  250. // LoadingDialogHelper.dismissLoading(context);
  251. if (entity.code == 0) {
  252. setState(() {
  253. equipmentVOS.clear();
  254. equipmentVOS.addAll(entity.data.equipmentVOS);
  255. });
  256. } else {
  257. showToast(entity.msg);
  258. }
  259. }
  260. equipmentInfo(int id) async{
  261. var result = await DioUtil().request("equipment/equipmentInfo",method: DioMethod.get,params: {'id':id});
  262. EquipmentInfoEntity entity=equipmentInfoEntityFromJson(EquipmentInfoEntity(), result);
  263. if (entity.code == 0) {
  264. setState(() {
  265. Navigator.push(
  266. context,
  267. MaterialPageRoute(
  268. builder: (context) => DeviceManageDetailPage(data:entity.data)));
  269. });
  270. } else {
  271. showToast(entity.msg);
  272. }
  273. }
  274. }