project_user_page.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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, onSuccess: (data) {
  33. if(data != null){
  34. _list.addAll(data);
  35. }else{
  36. }
  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(context, {"id":model.userId,"name":model.name});
  49. break;
  50. case SelectType.MANY:
  51. break;
  52. }
  53. }
  54. @override
  55. Widget build(BuildContext context) {
  56. return Scaffold(
  57. appBar: MyAppBar(
  58. centerTitle: "维保人员",
  59. actions: <Widget>[
  60. widget.type == SelectType.MANY
  61. ? FlatButton(
  62. onPressed: () {},
  63. child: Text(
  64. "确定",
  65. key: const Key('actionName'),
  66. style: TextStyle(color: Colors.white),
  67. ),
  68. textColor: Colours.dark_text,
  69. highlightColor: Colors.transparent)
  70. : Container(),
  71. ],
  72. ),
  73. body: SafeArea(
  74. child: AzListView(
  75. data: _list,
  76. itemBuilder: (context, model) => _buildListItem(model),
  77. isUseRealIndex: true,
  78. itemHeight: 40,
  79. suspensionWidget: null,
  80. suspensionHeight: 0,
  81. indexBarBuilder: (context, list, onTouch) {
  82. return IndexBar(
  83. onTouch: onTouch,
  84. data: list,
  85. itemHeight: 18,
  86. touchDownColor: Colors.transparent,
  87. textStyle: Theme.of(context).textTheme.subtitle);
  88. },
  89. ),
  90. ));
  91. }
  92. bool test = false;
  93. Widget _buildListItem(WorkerItem model) {
  94. return InkWell(
  95. onTap: () {
  96. _clickItem(model);
  97. },
  98. child: Container(
  99. child: Container(
  100. decoration: BoxDecoration(
  101. border: (model.isShowSuspension)
  102. ? Border(
  103. top: Divider.createBorderSide(context, width: 0.6),
  104. )
  105. : null),
  106. child: SelectWorker(
  107. avatar: model.avatarUrl,
  108. title: model.name,
  109. isCheckbox: true,
  110. isChecked: test,
  111. // onTap: () {
  112. // setState(() {
  113. // test = !test;
  114. // });
  115. // },
  116. // onClick: (bool bol) {
  117. // setState(() {
  118. // test = bol;
  119. // });
  120. // },
  121. ),
  122. ),
  123. ),
  124. );
  125. }
  126. }