Versione OK Pour l'onglet événements.

This commit is contained in:
DahoudG
2025-09-15 20:15:34 +00:00
parent 8a619ee1bf
commit 12d514d866
73 changed files with 11508 additions and 674 deletions

View File

@@ -176,6 +176,72 @@ class PageTransitions {
},
);
}
/// Transition avec effet de morphing et blur
static PageRouteBuilder<T> morphWithBlur<T>(Widget page) {
return PageRouteBuilder<T>(
pageBuilder: (context, animation, secondaryAnimation) => page,
transitionDuration: const Duration(milliseconds: 500),
reverseTransitionDuration: const Duration(milliseconds: 400),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
final curvedAnimation = CurvedAnimation(
parent: animation,
curve: Curves.easeInOutCubic,
);
final scaleAnimation = Tween<double>(
begin: 0.8,
end: 1.0,
).animate(curvedAnimation);
final fadeAnimation = Tween<double>(
begin: 0.0,
end: 1.0,
).animate(CurvedAnimation(
parent: animation,
curve: const Interval(0.3, 1.0, curve: Curves.easeOut),
));
return FadeTransition(
opacity: fadeAnimation,
child: Transform.scale(
scale: scaleAnimation.value,
child: child,
),
);
},
);
}
/// Transition avec effet de rotation 3D
static PageRouteBuilder<T> rotate3D<T>(Widget page) {
return PageRouteBuilder<T>(
pageBuilder: (context, animation, secondaryAnimation) => page,
transitionDuration: const Duration(milliseconds: 600),
reverseTransitionDuration: const Duration(milliseconds: 500),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
final curvedAnimation = CurvedAnimation(
parent: animation,
curve: Curves.easeInOutCubic,
);
return AnimatedBuilder(
animation: curvedAnimation,
builder: (context, child) {
final rotationY = (1.0 - curvedAnimation.value) * 0.5;
return Transform(
alignment: Alignment.center,
transform: Matrix4.identity()
..setEntry(3, 2, 0.001)
..rotateY(rotationY),
child: child,
);
},
child: child,
);
},
);
}
}
/// Extensions pour faciliter l'utilisation des transitions
@@ -209,6 +275,16 @@ extension NavigatorTransitions on NavigatorState {
Future<T?> pushSlideWithParallax<T>(Widget page) {
return push<T>(PageTransitions.slideWithParallax<T>(page));
}
/// Navigation avec transition de morphing
Future<T?> pushMorphWithBlur<T>(Widget page) {
return push<T>(PageTransitions.morphWithBlur<T>(page));
}
/// Navigation avec transition de rotation 3D
Future<T?> pushRotate3D<T>(Widget page) {
return push<T>(PageTransitions.rotate3D<T>(page));
}
}
/// Widget d'animation pour les éléments de liste