import 'package:flutter/material.dart'; import 'package:f0ckapp/controller/media_controller.dart'; enum PageTransition { opacity, scale, slide, rotate, flip } Widget buildAnimatedTransition({ required BuildContext context, required Widget child, required PageController pageController, required int index, required MediaController controller, }) { final double value = pageController.position.haveDimensions ? pageController.page! - index : 0; switch (controller.transitionType.value) { case PageTransition.opacity: return Opacity( opacity: Curves.easeOut.transform(1 - value.abs().clamp(0.0, 40.0)), child: Transform(transform: Matrix4.identity(), child: child), ); case PageTransition.scale: return Transform.scale( scale: 0.8 + Curves.easeOut.transform(1 - value.abs().clamp(0.0, 1.0)) * 0.2, child: child, ); case PageTransition.slide: return Transform.translate( offset: Offset(300 * value.abs(), 0), child: child, ); case PageTransition.rotate: return Opacity( opacity: (1 - value.abs()).clamp(0.0, 1.0), child: Transform.rotate(angle: value.abs() * 0.5, child: child), ); case PageTransition.flip: return Transform( transform: Matrix4.identity() ..setEntry(3, 2, 0.001) ..rotateY(value.abs()), alignment: Alignment.center, child: child, ); } }