maintenance_options.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/internal/maintenance/model/maintenance_options_item.dart';
  3. import 'package:liftmanager/res/gaps.dart';
  4. import 'package:liftmanager/res/resources.dart';
  5. import 'package:liftmanager/utils/theme_utils.dart';
  6. import 'package:liftmanager/widgets/load_image.dart';
  7. import 'package:liftmanager/widgets/options_item.dart';
  8. class MaintenanceOptions extends StatefulWidget {
  9. const MaintenanceOptions(
  10. {Key key, @required this.index,this.items, this.type, this.liftType,this.isEdit = false})
  11. : super(key: key);
  12. final int index;
  13. final List<MaintenanceOptionsItem> items;
  14. final String type;
  15. final int liftType;
  16. final bool isEdit;
  17. @override
  18. MaintenanceOptionsState createState() {
  19. return MaintenanceOptionsState();
  20. }
  21. }
  22. class MaintenanceOptionsState extends State<MaintenanceOptions>
  23. with
  24. AutomaticKeepAliveClientMixin<MaintenanceOptions>,
  25. SingleTickerProviderStateMixin {
  26. @override
  27. void initState() {
  28. super.initState();
  29. }
  30. @override
  31. Widget build(BuildContext context) {
  32. super.build(context);
  33. return ListView.builder(
  34. physics:widget.index == 4? NeverScrollableScrollPhysics():null,
  35. shrinkWrap: true, itemCount: widget.items.length+1, itemBuilder: itemWidget);
  36. }
  37. Widget itemWidget(BuildContext context, int index) {
  38. if (index == 0) {
  39. return Column(
  40. children: <Widget>[
  41. Padding(
  42. padding: EdgeInsets.fromLTRB(15, 10, 15, 10),
  43. child: Row(
  44. children: <Widget>[
  45. Expanded(
  46. flex: 1,
  47. child: Row(
  48. children: <Widget>[
  49. LoadAssetImage(
  50. "icon_gou_s",
  51. width: 15,
  52. height: 15,
  53. ),
  54. Gaps.hGap5,
  55. Text("已经保养",style: TextStyle(fontSize: 13,color: Color(0xFF999999)))
  56. ],
  57. )),
  58. Expanded(
  59. flex: 1,
  60. child: Row(
  61. children: <Widget>[
  62. LoadAssetImage(
  63. "icon_cha_s",
  64. width: 15,
  65. height: 15,
  66. ),
  67. Gaps.hGap5,
  68. Text("需要变更",style: TextStyle(fontSize: 13,color: Color(0xFF999999)),)
  69. ],
  70. ),
  71. ),
  72. Expanded(
  73. flex: 1,
  74. child: Row(
  75. children: <Widget>[
  76. LoadAssetImage(
  77. "icon_no_s",
  78. width: 15,
  79. height: 15,
  80. ),
  81. Gaps.hGap5,
  82. Text("无此项",style: TextStyle(fontSize: 13,color: Color(0xFF999999)))
  83. ],
  84. ),
  85. ),
  86. ],
  87. )
  88. )
  89. ],
  90. );
  91. }
  92. return Padding(
  93. padding: EdgeInsets.fromLTRB(15, 5, 15, 5),
  94. child: OptionsItem(
  95. title: "${widget.items[index-1].item}",
  96. content: "${widget.items[index-1].content}",
  97. value: widget.items[index-1].status,
  98. isEdit: widget.isEdit,
  99. onTap: (s) {
  100. if(!widget.isEdit){
  101. return;
  102. }
  103. setState(() {
  104. widget.items[index-1].status = s;
  105. });
  106. },
  107. ),
  108. );
  109. }
  110. @override
  111. bool get wantKeepAlive => true;
  112. }