repair_fault_page.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:keyboard_actions/keyboard_actions.dart';
  5. import 'package:liftmanager/internal/repair/model/repair_fault_entity.dart';
  6. import 'package:liftmanager/res/resources.dart';
  7. import 'package:liftmanager/routers/fluro_navigator.dart';
  8. import 'package:liftmanager/utils/theme_utils.dart';
  9. import 'package:liftmanager/widgets/app_bar.dart';
  10. import 'package:liftmanager/widgets/radio_item.dart';
  11. class RepairFaultPage extends StatefulWidget {
  12. RepairFaultPage(this.title, this.item);
  13. final String title;
  14. final RepairFaultEntity item;
  15. @override
  16. State<StatefulWidget> createState() {
  17. return RepairFaultPageState();
  18. }
  19. }
  20. class RepairFaultPageState extends State<RepairFaultPage> {
  21. final Map<String, String> selected_map = {};
  22. @override
  23. Widget build(BuildContext context) {
  24. return Scaffold(
  25. appBar: MyAppBar(
  26. centerTitle: "${widget.title}",
  27. actions: <Widget>[
  28. FlatButton(
  29. child: Text("确定", key: const Key('actionName')),
  30. textColor: Colours.text,
  31. highlightColor: Colors.transparent,
  32. onPressed: () {
  33. NavigatorUtils.goBackWithParams(context, selected_map);
  34. },
  35. )
  36. ],
  37. ),
  38. body: SafeArea(
  39. child: Container(
  40. color: ThemeUtils.getBackgroundColor(context),
  41. child: Column(
  42. children: <Widget>[
  43. Expanded(
  44. flex: 1,
  45. child: defaultTargetPlatform == TargetPlatform.iOS
  46. ? FormKeyboardActions(child: _buildBody())
  47. : SingleChildScrollView(child: _buildBody()),
  48. )
  49. ],
  50. ),
  51. ),
  52. ));
  53. }
  54. _buildBody() {
  55. return Padding(
  56. padding: EdgeInsets.only(bottom: 30),
  57. child: Column(
  58. crossAxisAlignment: CrossAxisAlignment.start,
  59. children: <Widget>[
  60. Column(
  61. children: widget.item.faultTypes.map((faultType) {
  62. return Column(
  63. children: <Widget>[
  64. Offstage(
  65. offstage: widget.item.faultCategory == "故障处理" ||
  66. widget.item.faultCategory == "故障性质" ||
  67. widget.item.faultCategory == "故障责任",
  68. child: Container(
  69. padding: EdgeInsets.all(15),
  70. child: Text("${faultType.faultType}"),
  71. ),
  72. ),
  73. Column(
  74. children: faultType.liftFaults.map((liftFaults) {
  75. return RadioItem(
  76. title:
  77. "${liftFaults.faultDesc.length == 0 ? liftFaults.faultType : liftFaults.faultDesc}",
  78. value:
  79. "${liftFaults.faultDesc.length == 0 ? liftFaults.faultType : liftFaults.faultDesc}",
  80. groupValue: selected_map[liftFaults.id],
  81. onTap: () {
  82. if (selected_map[liftFaults.id] != null) {
  83. selected_map.remove(liftFaults.id);
  84. } else {
  85. selected_map[liftFaults.id] =
  86. "${liftFaults.faultDesc.length == 0 ? liftFaults.faultType : liftFaults.faultDesc}";
  87. }
  88. setState(() {});
  89. });
  90. }).toList(),
  91. )
  92. ],
  93. );
  94. }).toList()),
  95. ],
  96. ),
  97. );
  98. }
  99. }