ppm dynamic tabs added.

design_3.0_latest
Sikander Saleem 9 months ago
parent 1893b45dc9
commit 5a211a295f

@ -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<PpmCalibrationToolsForm> {
@override
Widget build(BuildContext 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(
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<PpmCalibrationToolsForm> {
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(() {});

@ -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<PpmPmChecklistForm> {
@override
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 ?? [];
return (list.isEmpty)
? const NoDataFound().center
@ -46,7 +48,7 @@ class _PpmPmChecklistFormState extends State<PpmPmChecklistForm> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (index == 0) ...[
"4 /4 . PM Checklist".heading5(context),
"$currentIndex /$totalTabs . PM Checklist".heading5(context),
16.height,
],
AppTextFormField(

@ -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<PpmPMKitsForm> {
@override
Widget build(BuildContext context) {
int totalTabs = Provider.of<PpmProvider>(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<PpmPMKitsForm> {
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(() {});

@ -35,12 +35,12 @@ class UpdatePpm extends StatefulWidget {
State<UpdatePpm> createState() => _UpdatePpmState();
}
class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMixin {
class _UpdatePpmState extends State<UpdatePpm> with TickerProviderStateMixin {
late PlanPreventiveVisit _planPreventiveVisit;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
late TabController _tabController;
TabController? _tabController;
late PpmProvider ppmProvider;
_onSubmit({required int status}) async {
@ -79,15 +79,28 @@ class _UpdatePpmState extends State<UpdatePpm> with SingleTickerProviderStateMix
void initState() {
ppmProvider = Provider.of<PpmProvider>(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<UpdatePpm> with SingleTickerProviderStateMix
onTap: (index) {
tabIndex = index;
if (tabIndex == 0) {
_tabController.animateTo(0);
_tabController?.animateTo(0);
}
setState(() {});
},
@ -139,7 +152,11 @@ class _UpdatePpmState extends State<UpdatePpm> 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<UpdatePpm> 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),

@ -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<WoInfoForm> createState() => _WoInfoFormState();
@ -239,6 +240,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
} else {
ppmProvider.totalTabs = 3;
}
widget.onTypeOfServiceChange!(value);
}
},
),

Loading…
Cancel
Save