Merge pull request #159 from yaso-meth/NEW--Peak-Preview

NEW--Peak-Preview
This commit is contained in:
yaso-meth
2025-05-07 13:35:15 +02:00
committed by GitHub
2 changed files with 41 additions and 6 deletions

View File

@@ -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';
@@ -25,17 +26,41 @@ class MihApp extends StatefulWidget {
State<MihApp> createState() => _MihAppState();
}
class _MihAppState extends State<MihApp> {
class _MihAppState extends State<MihApp> with SingleTickerProviderStateMixin {
late PageController _pageController;
late AnimationController _animationController;
void unfocusAll() {
FocusScope.of(context).unfocus();
}
Future<void> _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 +79,16 @@ class _MihAppState extends State<MihApp> {
void initState() {
super.initState();
_pageController = PageController(initialPage: widget.selectedbodyIndex);
_animationController = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 400),
);
if (!MzanziInnovationHub.of(context)!.theme.kIsWeb) {
// Trigger the peak animation on start (or call this elsewhere)
WidgetsBinding.instance.addPostFrameCallback((_) {
_peakAnimation();
});
}
}
@override

View File

@@ -59,16 +59,16 @@ class _MihWalletState extends State<MihWallet> {
MihAppTools getTools() {
Map<Widget, void Function()?> 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,