profile wallet linked with view model.
							parent
							
								
									c83754fc4a
								
							
						
					
					
						commit
						c00e69ef0c
					
				| @ -0,0 +1,59 @@ | |||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:flutter/physics.dart'; | ||||||
|  | 
 | ||||||
|  | /// Reusable spring route | ||||||
|  | class CustomPageRoute extends PageRouteBuilder { | ||||||
|  |   final Widget page; | ||||||
|  |   final AxisDirection direction; | ||||||
|  | 
 | ||||||
|  |   CustomPageRoute({required this.page, this.direction = AxisDirection.right}) | ||||||
|  |       : super( | ||||||
|  |           transitionDuration: const Duration(milliseconds: 1000), | ||||||
|  |           pageBuilder: (_, __, ___) => page, | ||||||
|  |           transitionsBuilder: (context, animation, secondaryAnimation, child) { | ||||||
|  |             final spring = SpringDescription(mass: 1, stiffness: 100, damping: 15); | ||||||
|  | 
 | ||||||
|  |             // Drive animation with spring | ||||||
|  |             final curvedAnimation = animation.drive( | ||||||
|  |               Tween<double>(begin: 0.0, end: 1.0).chain(CurveTween(curve: _SpringCurve(spring))), | ||||||
|  |             ); | ||||||
|  | 
 | ||||||
|  |             // Choose offset based on direction | ||||||
|  |             Offset beginOffset; | ||||||
|  |             switch (direction) { | ||||||
|  |               case AxisDirection.left: | ||||||
|  |                 beginOffset = const Offset(-1.0, 0.0); | ||||||
|  |                 break; | ||||||
|  |               case AxisDirection.right: | ||||||
|  |                 beginOffset = const Offset(1.0, 0.0); | ||||||
|  |                 break; | ||||||
|  |               case AxisDirection.up: | ||||||
|  |                 beginOffset = const Offset(0.0, -1.0); | ||||||
|  |                 break; | ||||||
|  |               case AxisDirection.down: | ||||||
|  |                 beginOffset = const Offset(0.0, 1.0); | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             final offsetAnimation = Tween<Offset>(begin: beginOffset, end: Offset.zero).animate(curvedAnimation); | ||||||
|  | 
 | ||||||
|  |             return SlideTransition( | ||||||
|  |               position: offsetAnimation, | ||||||
|  |               child: child, | ||||||
|  |             ); | ||||||
|  |           }, | ||||||
|  |         ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /// Custom spring curve | ||||||
|  | class _SpringCurve extends Curve { | ||||||
|  |   final SpringDescription spring; | ||||||
|  | 
 | ||||||
|  |   _SpringCurve(this.spring); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   double transform(double t) { | ||||||
|  |     final sim = SpringSimulation(spring, 0, 1, 0); | ||||||
|  |     return sim.x(t * 1.5); // scaled time | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | import 'package:flutter/physics.dart'; | ||||||
|  | import 'package:flutter/widgets.dart'; | ||||||
|  | 
 | ||||||
|  | PageRouteBuilder springPageRoute(Widget page) { | ||||||
|  |   return PageRouteBuilder( | ||||||
|  |     pageBuilder: (_, __, ___) => page, | ||||||
|  |     transitionDuration: const Duration(milliseconds: 1000), | ||||||
|  |     transitionsBuilder: (context, animation, secondaryAnimation, child) { | ||||||
|  |       final spring = SpringDescription(mass: 1, stiffness: 100, damping: 15); | ||||||
|  | 
 | ||||||
|  |       final curvedAnimation = animation.drive( | ||||||
|  |         Tween<double>(begin: 0.0, end: 1.0).chain(CurveTween(curve: _SpringCurve(spring))), | ||||||
|  |       ); | ||||||
|  | 
 | ||||||
|  |       final offsetAnimation = Tween<Offset>( | ||||||
|  |         begin: const Offset(-1.0, 0.0), // slide from left | ||||||
|  |         end: Offset.zero, | ||||||
|  |       ).animate(curvedAnimation); | ||||||
|  | 
 | ||||||
|  |       return SlideTransition( | ||||||
|  |         position: offsetAnimation, | ||||||
|  |         child: child, | ||||||
|  |       ); | ||||||
|  |     }, | ||||||
|  |   ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class _SpringCurve extends Curve { | ||||||
|  |   final SpringDescription spring; | ||||||
|  | 
 | ||||||
|  |   _SpringCurve(this.spring); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   double transform(double t) { | ||||||
|  |     final sim = SpringSimulation(spring, 0, 1, 0); | ||||||
|  |     return sim.x(t * 1.5); // scale time so it completes properly | ||||||
|  |   } | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue