maintenance_options.dart 3.5 KB

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