diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart b/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart index 1caa2484..f6484ace 100644 --- a/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart +++ b/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; @@ -28,6 +29,8 @@ class _PpmCalibrationToolsFormState extends State { @override Widget build(BuildContext context) { final userProvider = Provider.of(context); + int totalTabs = Provider.of(context, listen: false).totalTabs; + int currentIndex = totalTabs == 4 ? 2 : 1; return ListView.separated( itemCount: widget.models!.length + 1, padding: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 16), @@ -71,7 +74,7 @@ class _PpmCalibrationToolsFormState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - (index == 0 ? "2 /4 . Calibration Tools" : "").heading5(context), + (index == 0 ? "$currentIndex /$totalTabs . Calibration Tools" : "").heading5(context), "trash".toSvgAsset(height: 20, width: 15).onPress(() { widget.models!.remove(model); setState(() {}); diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart b/lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart index 05a14ed1..e357c36b 100644 --- a/lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart +++ b/lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; @@ -31,7 +32,8 @@ class _PpmPmChecklistFormState extends State { @override Widget build(BuildContext context) { - SettingProvider settingProvider = Provider.of(context, listen: false); + int totalTabs = Provider.of(context, listen: false).totalTabs; + int currentIndex = totalTabs == 4 ? 4 : 3; List? list = widget.checkList ?? []; return (list.isEmpty) ? const NoDataFound().center @@ -46,7 +48,7 @@ class _PpmPmChecklistFormState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ if (index == 0) ...[ - "4 /4 . PM Checklist".heading5(context), + "$currentIndex /$totalTabs . PM Checklist".heading5(context), 16.height, ], AppTextFormField( diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart b/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart index d36448f3..14590fd8 100644 --- a/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart +++ b/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; @@ -24,6 +26,8 @@ class PpmPMKitsForm extends StatefulWidget { class _PpmPMKitsFormState extends State { @override Widget build(BuildContext context) { + int totalTabs = Provider.of(context, listen: false).totalTabs; + int currentIndex = totalTabs == 4 ? 3 : 2; return ListView.builder( itemCount: widget.models!.length + 1, shrinkWrap: true, @@ -68,7 +72,7 @@ class _PpmPMKitsFormState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - (index == 0 ? "3 /4 . PM Kits" : "").heading5(context), + (index == 0 ? "$currentIndex /$totalTabs . PM Kits" : "").heading5(context), "trash".toSvgAsset(width: 15, height: 20).onPress(() { widget.models!.remove(model); setState(() {}); diff --git a/lib/views/pages/user/ppm/update_ppm/update_ppm.dart b/lib/views/pages/user/ppm/update_ppm/update_ppm.dart index 73c54a40..667bde1d 100644 --- a/lib/views/pages/user/ppm/update_ppm/update_ppm.dart +++ b/lib/views/pages/user/ppm/update_ppm/update_ppm.dart @@ -35,12 +35,12 @@ class UpdatePpm extends StatefulWidget { State createState() => _UpdatePpmState(); } -class _UpdatePpmState extends State with SingleTickerProviderStateMixin { +class _UpdatePpmState extends State with TickerProviderStateMixin { late PlanPreventiveVisit _planPreventiveVisit; final GlobalKey _scaffoldKey = GlobalKey(); - late TabController _tabController; + TabController? _tabController; late PpmProvider ppmProvider; _onSubmit({required int status}) async { @@ -79,15 +79,28 @@ class _UpdatePpmState extends State with SingleTickerProviderStateMix void initState() { ppmProvider = Provider.of(context, listen: false); _planPreventiveVisit = widget.planPreventiveVisit; - _tabController = TabController(length: ppmProvider.totalTabs, vsync: this); + initTabs(_planPreventiveVisit.typeOfService); super.initState(); } + void initTabs(typeOfService) { + if (typeOfService == null) { + return; + } + if (typeOfService?.id == 66) { + ppmProvider.totalTabs = 4; + } else { + ppmProvider.totalTabs = 3; + } + _tabController?.dispose; + _tabController = TabController(length: ppmProvider.totalTabs, vsync: this); + } + int tabIndex = 0; @override void dispose() { - _tabController.dispose(); + _tabController?.dispose(); super.dispose(); } @@ -127,7 +140,7 @@ class _UpdatePpmState extends State with SingleTickerProviderStateMix onTap: (index) { tabIndex = index; if (tabIndex == 0) { - _tabController.animateTo(0); + _tabController?.animateTo(0); } setState(() {}); }, @@ -139,7 +152,11 @@ class _UpdatePpmState extends State with SingleTickerProviderStateMix ), TabBarView( children: [ - WoInfoForm(planPreventiveVisit: _planPreventiveVisit), + WoInfoForm( + planPreventiveVisit: _planPreventiveVisit, + onTypeOfServiceChange: (selectedTypeOfService) { + initTabs(selectedTypeOfService); + }), TabBarView( physics: const NeverScrollableScrollPhysics(), controller: _tabController, @@ -174,14 +191,14 @@ class _UpdatePpmState extends State with SingleTickerProviderStateMix _onSubmit(status: 1); return; } - if (_tabController.index == 3) { + if (ppmProvider.totalTabs == _tabController!.index + 1) { _onSubmit(status: 1); } else { - _tabController.animateTo(_tabController.index + 1); + _tabController?.animateTo(_tabController!.index + 1); setState(() {}); } }, - label: tabIndex == 0 ? "Complete".addTranslation : (_tabController.index == 3 ? "Complete".addTranslation : context.translation.next), + label: tabIndex == 0 ? "Complete".addTranslation : ((ppmProvider.totalTabs == _tabController!.index + 1) ? "Complete".addTranslation : context.translation.next), ).expanded, ], ).toShadowContainer(context, showShadow: false, borderRadius: 0), diff --git a/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart b/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart index 12be9735..e4c4760b 100644 --- a/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart +++ b/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart @@ -27,8 +27,9 @@ import '../../../../widgets/timer/app_timer.dart'; class WoInfoForm extends StatefulWidget { // final Ppm model; final PlanPreventiveVisit planPreventiveVisit; + Function(Lookup)? onTypeOfServiceChange; - const WoInfoForm({Key? key, required this.planPreventiveVisit}) : super(key: key); + WoInfoForm({Key? key, required this.planPreventiveVisit, this.onTypeOfServiceChange}) : super(key: key); @override State createState() => _WoInfoFormState(); @@ -239,6 +240,7 @@ class _WoInfoFormState extends State { } else { ppmProvider.totalTabs = 3; } + widget.onTypeOfServiceChange!(value); } }, ),