ppm dynamic tabs added.

design_3.0_internal_audit_module
Sikander Saleem 1 year ago
parent 1893b45dc9
commit 5a211a295f

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.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/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
@ -28,6 +29,8 @@ class _PpmCalibrationToolsFormState extends State<PpmCalibrationToolsForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); final userProvider = Provider.of<UserProvider>(context);
int totalTabs = Provider.of<PpmProvider>(context, listen: false).totalTabs;
int currentIndex = totalTabs == 4 ? 2 : 1;
return ListView.separated( return ListView.separated(
itemCount: widget.models!.length + 1, itemCount: widget.models!.length + 1,
padding: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 16), padding: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 16),
@ -71,7 +74,7 @@ class _PpmCalibrationToolsFormState extends State<PpmCalibrationToolsForm> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
(index == 0 ? "2 /4 . Calibration Tools" : "").heading5(context), (index == 0 ? "$currentIndex /$totalTabs . Calibration Tools" : "").heading5(context),
"trash".toSvgAsset(height: 20, width: 15).onPress(() { "trash".toSvgAsset(height: 20, width: 15).onPress(() {
widget.models!.remove(model); widget.models!.remove(model);
setState(() {}); setState(() {});

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
@ -31,7 +32,8 @@ class _PpmPmChecklistFormState extends State<PpmPmChecklistForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SettingProvider settingProvider = Provider.of<SettingProvider>(context, listen: false); int totalTabs = Provider.of<PpmProvider>(context, listen: false).totalTabs;
int currentIndex = totalTabs == 4 ? 4 : 3;
List<PreventiveVisitChecklists>? list = widget.checkList ?? []; List<PreventiveVisitChecklists>? list = widget.checkList ?? [];
return (list.isEmpty) return (list.isEmpty)
? const NoDataFound().center ? const NoDataFound().center
@ -46,7 +48,7 @@ class _PpmPmChecklistFormState extends State<PpmPmChecklistForm> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (index == 0) ...[ if (index == 0) ...[
"4 /4 . PM Checklist".heading5(context), "$currentIndex /$totalTabs . PM Checklist".heading5(context),
16.height, 16.height,
], ],
AppTextFormField( AppTextFormField(

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.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/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
@ -24,6 +26,8 @@ class PpmPMKitsForm extends StatefulWidget {
class _PpmPMKitsFormState extends State<PpmPMKitsForm> { class _PpmPMKitsFormState extends State<PpmPMKitsForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
int totalTabs = Provider.of<PpmProvider>(context, listen: false).totalTabs;
int currentIndex = totalTabs == 4 ? 3 : 2;
return ListView.builder( return ListView.builder(
itemCount: widget.models!.length + 1, itemCount: widget.models!.length + 1,
shrinkWrap: true, shrinkWrap: true,
@ -68,7 +72,7 @@ class _PpmPMKitsFormState extends State<PpmPMKitsForm> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
(index == 0 ? "3 /4 . PM Kits" : "").heading5(context), (index == 0 ? "$currentIndex /$totalTabs . PM Kits" : "").heading5(context),
"trash".toSvgAsset(width: 15, height: 20).onPress(() { "trash".toSvgAsset(width: 15, height: 20).onPress(() {
widget.models!.remove(model); widget.models!.remove(model);
setState(() {}); setState(() {});

@ -35,12 +35,12 @@ class UpdatePpm extends StatefulWidget {
State<UpdatePpm> createState() => _UpdatePpmState(); State<UpdatePpm> createState() => _UpdatePpmState();
} }
class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMixin { class _UpdatePpmState extends State<UpdatePpm> with TickerProviderStateMixin {
late PlanPreventiveVisit _planPreventiveVisit; late PlanPreventiveVisit _planPreventiveVisit;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
late TabController _tabController; TabController? _tabController;
late PpmProvider ppmProvider; late PpmProvider ppmProvider;
_onSubmit({required int status}) async { _onSubmit({required int status}) async {
@ -79,15 +79,28 @@ class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMix
void initState() { void initState() {
ppmProvider = Provider.of<PpmProvider>(context, listen: false); ppmProvider = Provider.of<PpmProvider>(context, listen: false);
_planPreventiveVisit = widget.planPreventiveVisit; _planPreventiveVisit = widget.planPreventiveVisit;
_tabController = TabController(length: ppmProvider.totalTabs, vsync: this); initTabs(_planPreventiveVisit.typeOfService);
super.initState(); 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; int tabIndex = 0;
@override @override
void dispose() { void dispose() {
_tabController.dispose(); _tabController?.dispose();
super.dispose(); super.dispose();
} }
@ -127,7 +140,7 @@ class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMix
onTap: (index) { onTap: (index) {
tabIndex = index; tabIndex = index;
if (tabIndex == 0) { if (tabIndex == 0) {
_tabController.animateTo(0); _tabController?.animateTo(0);
} }
setState(() {}); setState(() {});
}, },
@ -139,7 +152,11 @@ class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMix
), ),
TabBarView( TabBarView(
children: [ children: [
WoInfoForm(planPreventiveVisit: _planPreventiveVisit), WoInfoForm(
planPreventiveVisit: _planPreventiveVisit,
onTypeOfServiceChange: (selectedTypeOfService) {
initTabs(selectedTypeOfService);
}),
TabBarView( TabBarView(
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
controller: _tabController, controller: _tabController,
@ -174,14 +191,14 @@ class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMix
_onSubmit(status: 1); _onSubmit(status: 1);
return; return;
} }
if (_tabController.index == 3) { if (ppmProvider.totalTabs == _tabController!.index + 1) {
_onSubmit(status: 1); _onSubmit(status: 1);
} else { } else {
_tabController.animateTo(_tabController.index + 1); _tabController?.animateTo(_tabController!.index + 1);
setState(() {}); 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, ).expanded,
], ],
).toShadowContainer(context, showShadow: false, borderRadius: 0), ).toShadowContainer(context, showShadow: false, borderRadius: 0),

@ -27,8 +27,9 @@ import '../../../../widgets/timer/app_timer.dart';
class WoInfoForm extends StatefulWidget { class WoInfoForm extends StatefulWidget {
// final Ppm model; // final Ppm model;
final PlanPreventiveVisit planPreventiveVisit; 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 @override
State<WoInfoForm> createState() => _WoInfoFormState(); State<WoInfoForm> createState() => _WoInfoFormState();
@ -239,6 +240,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
} else { } else {
ppmProvider.totalTabs = 3; ppmProvider.totalTabs = 3;
} }
widget.onTypeOfServiceChange!(value);
} }
}, },
), ),

Loading…
Cancel
Save