diff --git a/Frontend/lib/mih_package_components/mih_package.dart b/Frontend/lib/mih_package_components/mih_package.dart index 41d710ed..5895cd55 100644 --- a/Frontend/lib/mih_package_components/mih_package.dart +++ b/Frontend/lib/mih_package_components/mih_package.dart @@ -7,16 +7,15 @@ import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_d import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; import 'package:flutter/material.dart'; -// ignore: must_be_immutable class MihPackage extends StatefulWidget { final Widget appActionButton; final MihPackageTools appTools; final List appBody; final List appToolTitles; final MIHAppDrawer? actionDrawer; - int selectedbodyIndex; + final int selectedbodyIndex; final Function(int) onIndexChange; - MihPackage({ + const MihPackage({ super.key, required this.appActionButton, required this.appTools, @@ -33,6 +32,7 @@ class MihPackage extends StatefulWidget { class _MihPackageState extends State with SingleTickerProviderStateMixin { + late int _currentIndex; late PageController _pageController; late AnimationController _animationController; DateTime? lastPressedAt; @@ -42,7 +42,7 @@ class _MihPackageState extends State } Future _peakAnimation() async { - int currentPage = widget.selectedbodyIndex; + int currentPage = _currentIndex; double peakOffset = _pageController.position.viewportDimension * 0.075; double currentOffset = _pageController.page! * _pageController.position.viewportDimension; @@ -66,15 +66,17 @@ class _MihPackageState extends State @override void dispose() { - super.dispose(); _pageController.dispose(); _animationController.dispose(); + super.dispose(); } @override void didUpdateWidget(covariant MihPackage oldWidget) { super.didUpdateWidget(oldWidget); - if (oldWidget.selectedbodyIndex != widget.selectedbodyIndex) { + if (oldWidget.selectedbodyIndex != widget.selectedbodyIndex && + _currentIndex != widget.selectedbodyIndex) { + _currentIndex = widget.selectedbodyIndex; _pageController.animateToPage( widget.selectedbodyIndex, duration: const Duration(milliseconds: 300), @@ -86,6 +88,7 @@ class _MihPackageState extends State @override void initState() { super.initState(); + _currentIndex = widget.selectedbodyIndex; _pageController = PageController(initialPage: widget.selectedbodyIndex); _animationController = AnimationController( vsync: this, @@ -197,9 +200,9 @@ class _MihPackageState extends State }, onPageChanged: (index) { setState(() { - widget.selectedbodyIndex = index; - widget.onIndexChange(widget.selectedbodyIndex); + _currentIndex = index; }); + widget.onIndexChange(widget.selectedbodyIndex); }, ), ),