project_user_page.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import 'package:azlistview/azlistview.dart';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:liftmanager/internal/project/model/worker_entity.dart';
  6. import 'package:liftmanager/net/api_service.dart';
  7. import 'package:liftmanager/res/resources.dart';
  8. import 'package:liftmanager/routers/fluro_navigator.dart';
  9. import 'package:liftmanager/utils/toast.dart';
  10. import 'package:liftmanager/widgets/app_bar.dart';
  11. import 'package:liftmanager/widgets/select_worker.dart';
  12. /// 可查看/单选/多选
  13. enum SelectType { NONE, SINGLE, MANY }
  14. class ProjectUsersPage extends StatefulWidget {
  15. ProjectUsersPage(this.projectId, this.type);
  16. final String projectId;
  17. final SelectType type;
  18. @override
  19. State<StatefulWidget> createState() {
  20. return ProjectUsersPageState();
  21. }
  22. }
  23. class ProjectUsersPageState extends State<ProjectUsersPage> {
  24. List<WorkerItem> _list = [];
  25. @override
  26. void initState() {
  27. super.initState();
  28. getProjectUser();
  29. }
  30. ///获取项目用户
  31. getProjectUser() {
  32. ApiService(context: context).projectUser(widget.projectId,
  33. onSuccess: (data) {
  34. if (data != null) {
  35. _list.addAll(data);
  36. } else {}
  37. setState(() {});
  38. }, onError: (code, msg) {
  39. toasts(msg);
  40. });
  41. }
  42. ///点击item
  43. _clickItem(WorkerItem model) {
  44. switch (widget.type) {
  45. case SelectType.NONE:
  46. break;
  47. case SelectType.SINGLE:
  48. NavigatorUtils.goBackWithParams(
  49. context, {"id": model.userId, "name": model.name});
  50. break;
  51. case SelectType.MANY:
  52. break;
  53. }
  54. }
  55. @override
  56. Widget build(BuildContext context) {
  57. return Scaffold(
  58. appBar: MyAppBar(
  59. centerTitle: "维保人员",
  60. actions: <Widget>[
  61. widget.type == SelectType.MANY
  62. ? FlatButton(
  63. onPressed: () {},
  64. child: Text(
  65. "确定",
  66. key: const Key('actionName'),
  67. style: TextStyle(color: Colors.white),
  68. ),
  69. textColor: Colours.text,
  70. highlightColor: Colors.transparent)
  71. : Container(),
  72. ],
  73. ),
  74. body: SafeArea(
  75. child: AzListView(
  76. data: _list,
  77. itemBuilder: (context, model) => _buildListItem(model),
  78. isUseRealIndex: true,
  79. itemHeight: 40,
  80. suspensionWidget: null,
  81. suspensionHeight: 0,
  82. indexBarBuilder: (context, list, onTouch) {
  83. return IndexBar(
  84. onTouch: onTouch,
  85. data: list,
  86. itemHeight: 18,
  87. touchDownColor: Colors.transparent,
  88. textStyle: Theme.of(context).textTheme.subtitle);
  89. },
  90. ),
  91. ));
  92. }
  93. bool test = false;
  94. Widget _buildListItem(WorkerItem model) {
  95. return InkWell(
  96. onTap: () {
  97. _clickItem(model);
  98. },
  99. child: Container(
  100. child: Container(
  101. decoration: BoxDecoration(
  102. border: (model.isShowSuspension)
  103. ? Border(
  104. top: Divider.createBorderSide(context, width: 0.6),
  105. )
  106. : null),
  107. child: SelectWorker(
  108. avatar: model.avatarUrl,
  109. title: model.name,
  110. isCheckbox: true,
  111. isChecked: test,
  112. // onTap: () {
  113. // setState(() {
  114. // test = !test;
  115. // });
  116. // },
  117. // onClick: (bool bol) {
  118. // setState(() {
  119. // test = bol;
  120. // });
  121. // },
  122. ),
  123. ),
  124. ),
  125. );
  126. }
  127. }