From 835dbbb8261fba78481098be8bc515fcb385bff3 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 7 May 2025 13:17:58 +0200 Subject: [PATCH 1/3] package tool animations --- .../mih_package_components/mih_app.dart | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Frontend/lib/mih_components/mih_package_components/mih_app.dart b/Frontend/lib/mih_components/mih_package_components/mih_app.dart index 01cda197..995a08b0 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_app.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_app.dart @@ -25,17 +25,41 @@ class MihApp extends StatefulWidget { State createState() => _MihAppState(); } -class _MihAppState extends State { +class _MihAppState extends State with SingleTickerProviderStateMixin { late PageController _pageController; + late AnimationController _animationController; void unfocusAll() { FocusScope.of(context).unfocus(); } + Future _peakAnimation() async { + int currentPage = widget.selectedbodyIndex; + double peakOffset = _pageController.position.viewportDimension * 0.05; + double currentOffset = + _pageController.page! * _pageController.position.viewportDimension; + int nextPage = + currentPage + 1 < widget.appBody.length ? currentPage + 1 : currentPage; + if (nextPage != currentPage) { + await Future.delayed(const Duration(milliseconds: 150)); + await _pageController.animateTo( + currentOffset + peakOffset, + duration: const Duration(milliseconds: 300), + curve: Curves.easeOut, + ); + await _pageController.animateTo( + currentPage * _pageController.position.viewportDimension, + duration: const Duration(milliseconds: 300), + curve: Curves.easeIn, + ); + } + } + @override void dispose() { super.dispose(); _pageController.dispose(); + _animationController.dispose(); } @override @@ -54,6 +78,15 @@ class _MihAppState extends State { void initState() { super.initState(); _pageController = PageController(initialPage: widget.selectedbodyIndex); + _animationController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 400), + ); + + // Trigger the peak animation on start (or call this elsewhere) + WidgetsBinding.instance.addPostFrameCallback((_) { + _peakAnimation(); + }); } @override From 78d35a672eebcbaee7bc2f27ea543d57874b7638 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 7 May 2025 13:21:03 +0200 Subject: [PATCH 2/3] switch wallet icons --- .../lib/mih_packages/mzansi_wallet/mih_wallet.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 3af68433..dda1703a 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -59,16 +59,16 @@ class _MihWalletState extends State { MihAppTools getTools() { Map temp = {}; - temp[const Icon(Icons.favorite)] = () { - setState(() { - _selcetedIndex = 0; - }); - }; temp[const Icon(Icons.card_membership)] = () { setState(() { _selcetedIndex = 1; }); }; + temp[const Icon(Icons.favorite)] = () { + setState(() { + _selcetedIndex = 0; + }); + }; return MihAppTools( tools: temp, From a20146f63be0f4278e922b267f54d1288a9eebf5 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 7 May 2025 13:26:43 +0200 Subject: [PATCH 3/3] remove animation on web --- .../mih_package_components/mih_app.dart | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Frontend/lib/mih_components/mih_package_components/mih_app.dart b/Frontend/lib/mih_components/mih_package_components/mih_app.dart index 995a08b0..4020ac6c 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_app.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_app.dart @@ -1,3 +1,4 @@ +import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:flutter/material.dart'; @@ -82,11 +83,12 @@ class _MihAppState extends State with SingleTickerProviderStateMixin { vsync: this, duration: const Duration(milliseconds: 400), ); - - // Trigger the peak animation on start (or call this elsewhere) - WidgetsBinding.instance.addPostFrameCallback((_) { - _peakAnimation(); - }); + if (!MzanziInnovationHub.of(context)!.theme.kIsWeb) { + // Trigger the peak animation on start (or call this elsewhere) + WidgetsBinding.instance.addPostFrameCallback((_) { + _peakAnimation(); + }); + } } @override