QOL: MIH Package performance improvements

This commit is contained in:
2025-11-28 12:14:20 +02:00
parent e330875c6f
commit d64193d1f8

View File

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