Merge pull request #159 from yaso-meth/NEW--Peak-Preview
NEW--Peak-Preview
This commit is contained in:
@@ -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_packages/mih_home/components/mih_app_drawer.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart';
|
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -25,17 +26,41 @@ class MihApp extends StatefulWidget {
|
|||||||
State<MihApp> createState() => _MihAppState();
|
State<MihApp> createState() => _MihAppState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MihAppState extends State<MihApp> {
|
class _MihAppState extends State<MihApp> with SingleTickerProviderStateMixin {
|
||||||
late PageController _pageController;
|
late PageController _pageController;
|
||||||
|
late AnimationController _animationController;
|
||||||
|
|
||||||
void unfocusAll() {
|
void unfocusAll() {
|
||||||
FocusScope.of(context).unfocus();
|
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
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
_pageController.dispose();
|
_pageController.dispose();
|
||||||
|
_animationController.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -54,6 +79,16 @@ class _MihAppState extends State<MihApp> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_pageController = PageController(initialPage: widget.selectedbodyIndex);
|
_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
|
@override
|
||||||
|
|||||||
@@ -59,16 +59,16 @@ class _MihWalletState extends State<MihWallet> {
|
|||||||
|
|
||||||
MihAppTools getTools() {
|
MihAppTools getTools() {
|
||||||
Map<Widget, void Function()?> temp = {};
|
Map<Widget, void Function()?> temp = {};
|
||||||
temp[const Icon(Icons.favorite)] = () {
|
|
||||||
setState(() {
|
|
||||||
_selcetedIndex = 0;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
temp[const Icon(Icons.card_membership)] = () {
|
temp[const Icon(Icons.card_membership)] = () {
|
||||||
setState(() {
|
setState(() {
|
||||||
_selcetedIndex = 1;
|
_selcetedIndex = 1;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
temp[const Icon(Icons.favorite)] = () {
|
||||||
|
setState(() {
|
||||||
|
_selcetedIndex = 0;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return MihAppTools(
|
return MihAppTools(
|
||||||
tools: temp,
|
tools: temp,
|
||||||
|
|||||||
Reference in New Issue
Block a user