You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
5.7KB

  1. import 'package:farm_tpf/presentation/screens/actions/crop_status/sc_edit_action_crop_status.dart';
  2. import 'package:farm_tpf/presentation/screens/actions/disease/sc_edit_action_disease.dart';
  3. import 'package:farm_tpf/presentation/screens/actions/dung/sc_edit_action_dung.dart';
  4. import 'package:farm_tpf/presentation/screens/actions/end/sc_edit_action_end.dart';
  5. import 'package:farm_tpf/presentation/screens/actions/environment_update/sc_edit_action_environment_update.dart';
  6. import 'package:farm_tpf/presentation/screens/actions/harvest/sc_edit_action_harvest.dart';
  7. import 'package:farm_tpf/presentation/screens/actions/nursery/sc_edit_action_nursery.dart';
  8. import 'package:farm_tpf/presentation/screens/actions/other/sc_edit_action_other.dart';
  9. import 'package:farm_tpf/presentation/screens/actions/plant/sc_edit_action_plant.dart';
  10. import 'package:farm_tpf/presentation/screens/actions/spraying/sc_edit_action_spraying.dart';
  11. import 'package:farm_tpf/presentation/screens/actions/use_water/sc_edit_action_user_water.dart';
  12. import 'package:farm_tpf/utils/const_assets.dart';
  13. import 'package:farm_tpf/utils/const_color.dart';
  14. import 'package:farm_tpf/utils/const_string.dart';
  15. import 'package:flutter/material.dart';
  16. import 'package:get/get.dart';
  17. class PlotActionScreen extends StatefulWidget {
  18. int cropId;
  19. String cropCode;
  20. int cropType;
  21. PlotActionScreen({this.cropId, this.cropCode, this.cropType});
  22. @override
  23. _PlotActionScreenState createState() => _PlotActionScreenState();
  24. }
  25. class _PlotActionScreenState extends State<PlotActionScreen>
  26. with AutomaticKeepAliveClientMixin {
  27. List<ActionType> actions = new List<ActionType>();
  28. @override
  29. void initState() {
  30. super.initState();
  31. _initActionButtons();
  32. }
  33. @override
  34. void dispose() {
  35. super.dispose();
  36. }
  37. _initActionButtons() {
  38. //type: 0- Trồng, 1- ướm
  39. if (widget.cropType == 1) {
  40. actions.add(ActionType(
  41. plot_action_nursery,
  42. EditActionNurseryScreen(
  43. cropId: widget.cropId,
  44. ),
  45. AppAssets.icActionNursery));
  46. } else if (widget.cropType == 0) {
  47. actions.add(ActionType(
  48. plot_action_plant,
  49. EditActionPlantScreen(
  50. cropId: widget.cropId,
  51. ),
  52. AppAssets.icActionPlant));
  53. }
  54. actions.add(ActionType(
  55. plot_action_crop_status,
  56. EditActionCropStatusScreen(
  57. cropId: widget.cropId,
  58. ),
  59. AppAssets.icActionCropStatus));
  60. actions.add(ActionType(
  61. plot_action_environment_update,
  62. EditActionEnvironmentUpdate(
  63. cropId: widget.cropId,
  64. ),
  65. AppAssets.icActionEnvironment));
  66. actions.add(ActionType(
  67. plot_action_dung,
  68. EditActionDungScreen(
  69. cropId: widget.cropId,
  70. ),
  71. AppAssets.icActionDung));
  72. actions.add(ActionType(
  73. plot_action_spraying,
  74. EditActionSprayingScreen(
  75. cropId: widget.cropId,
  76. ),
  77. AppAssets.icActionSpraying));
  78. actions.add(ActionType(
  79. plot_action_disease,
  80. EditActionDiseaseScreen(
  81. cropId: widget.cropId,
  82. ),
  83. AppAssets.icActionDisease));
  84. actions.add(ActionType(
  85. plot_action_use_water,
  86. EditActionUseWaterScreen(
  87. cropId: widget.cropId,
  88. ),
  89. AppAssets.icActionUseWater));
  90. actions.add(ActionType(
  91. plot_action_other,
  92. EditActionOtherScreen(
  93. cropId: widget.cropId,
  94. ),
  95. AppAssets.icActionOther));
  96. actions.add(ActionType(
  97. plot_action_harvest,
  98. EditActionHarvestScreen(
  99. cropId: widget.cropId,
  100. ),
  101. AppAssets.icActionHarvest));
  102. actions.add(ActionType(
  103. plot_action_finish,
  104. EditActionEndScreen(
  105. cropId: widget.cropId,
  106. ),
  107. AppAssets.icActionEnd));
  108. }
  109. Widget _createActionButtons(ActionType actionType, BuildContext _context) {
  110. return GestureDetector(
  111. onTap: () {
  112. Navigator.of(context).push(
  113. MaterialPageRoute(builder: (context) => actionType.listScreen));
  114. },
  115. child: Container(
  116. margin: EdgeInsets.all(8),
  117. decoration: BoxDecoration(
  118. border: Border.all(color: Colors.grey, width: 0.1),
  119. color: Colors.white,
  120. borderRadius: BorderRadius.all(Radius.circular(8.0)),
  121. boxShadow: <BoxShadow>[
  122. BoxShadow(
  123. color: AppColors.GRAY1.withOpacity(0.2),
  124. offset: Offset(1.1, 1.1),
  125. blurRadius: 4.0),
  126. ],
  127. ),
  128. child: Column(
  129. mainAxisAlignment: MainAxisAlignment.center,
  130. crossAxisAlignment: CrossAxisAlignment.center,
  131. children: [
  132. Image.asset(
  133. actionType.icon,
  134. width: Get.width / 9,
  135. height: Get.width / 9,
  136. ),
  137. Text(
  138. actionType.actionName,
  139. textAlign: TextAlign.center,
  140. style: TextStyle(
  141. fontWeight: FontWeight.bold,
  142. fontSize: 13,
  143. color: AppColors.BLACK2,
  144. ),
  145. ),
  146. ],
  147. ),
  148. ));
  149. }
  150. @override
  151. Widget build(BuildContext context) {
  152. return GridView.count(
  153. shrinkWrap: true,
  154. crossAxisCount: 3,
  155. children: actions.map(
  156. (item) {
  157. return _createActionButtons(item, context);
  158. },
  159. ).toList());
  160. }
  161. @override
  162. bool get wantKeepAlive => true;
  163. }
  164. class ActionType {
  165. Widget listScreen;
  166. String actionName;
  167. String icon;
  168. ActionType(String actionName, Widget listScreen, String icon) {
  169. this.actionName = actionName;
  170. this.listScreen = listScreen;
  171. this.icon = icon;
  172. }
  173. }