repair_fault_page.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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.dark_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 == "故障处理" ||widget.item.faultCategory == "故障性质"||widget.item.faultCategory == "故障责任",
  66. child: Container(
  67. padding: EdgeInsets.all(15),
  68. child: Text("${faultType.faultType}"),
  69. ),
  70. ),
  71. Column(
  72. children: faultType.liftFaults.map((liftFaults){
  73. return RadioItem(
  74. title: "${liftFaults.faultDesc.length==0?liftFaults.faultType:liftFaults.faultDesc}",
  75. value: "${liftFaults.faultDesc.length==0?liftFaults.faultType:liftFaults.faultDesc}",
  76. groupValue: selected_map[liftFaults.id],
  77. onTap: () {
  78. if(selected_map[liftFaults.id] !=null){
  79. selected_map.remove(liftFaults.id);
  80. }else{
  81. selected_map[liftFaults.id] = "${liftFaults.faultDesc.length==0?liftFaults.faultType:liftFaults.faultDesc}";
  82. }
  83. setState(() {});
  84. });
  85. }).toList(),
  86. )
  87. ],
  88. );
  89. }).toList()),
  90. ],
  91. ),
  92. );
  93. }
  94. }