feat: add speech_to_text, optimize navigation transitions, improve bottom nav rebuild performance, and fix home screen padding.
This commit is contained in:
@@ -298,26 +298,52 @@ class _HomeRouteWrapper extends ConsumerWidget {
|
||||
}
|
||||
|
||||
/// Slide from right transition for push-style navigation.
|
||||
/// The entering page slides in from the right while the exiting page
|
||||
/// slides slightly left + fades, giving a native iOS-like depth effect.
|
||||
Widget _slideTransition(
|
||||
BuildContext context,
|
||||
Animation<double> animation,
|
||||
Animation<double> secondaryAnimation,
|
||||
Widget child,
|
||||
) {
|
||||
// Entering page: slide in from right
|
||||
final slideIn = Tween<Offset>(
|
||||
begin: const Offset(1, 0),
|
||||
end: Offset.zero,
|
||||
).animate(CurvedAnimation(
|
||||
parent: animation,
|
||||
curve: Curves.easeOutCubic,
|
||||
));
|
||||
|
||||
// Exiting page: slide slightly left + dim
|
||||
final slideOut = Tween<Offset>(
|
||||
begin: Offset.zero,
|
||||
end: const Offset(-0.25, 0),
|
||||
).animate(CurvedAnimation(
|
||||
parent: secondaryAnimation,
|
||||
curve: Curves.easeOutCubic,
|
||||
));
|
||||
|
||||
final fadeOut = Tween<double>(begin: 1.0, end: 0.9).animate(
|
||||
CurvedAnimation(parent: secondaryAnimation, curve: Curves.easeOut),
|
||||
);
|
||||
|
||||
return SlideTransition(
|
||||
position: Tween<Offset>(
|
||||
begin: const Offset(1, 0),
|
||||
end: Offset.zero,
|
||||
).animate(CurvedAnimation(parent: animation, curve: Curves.easeOut)),
|
||||
child: Container(
|
||||
color: Colors.white,
|
||||
child: child,
|
||||
position: slideOut,
|
||||
child: FadeTransition(
|
||||
opacity: fadeOut,
|
||||
child: SlideTransition(
|
||||
position: slideIn,
|
||||
child: DecoratedBox(
|
||||
decoration: const BoxDecoration(color: Colors.white),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// Smooth fade transition for tab-to-tab navigation.
|
||||
/// Uses a white container behind to prevent content overlap during transition.
|
||||
/// Smooth crossfade transition for tab-to-tab navigation.
|
||||
Widget _fadeTransition(
|
||||
BuildContext context,
|
||||
Animation<double> animation,
|
||||
@@ -325,9 +351,9 @@ Widget _fadeTransition(
|
||||
Widget child,
|
||||
) {
|
||||
return FadeTransition(
|
||||
opacity: CurveTween(curve: Curves.easeIn).animate(animation),
|
||||
child: Container(
|
||||
color: Colors.white,
|
||||
opacity: CurvedAnimation(parent: animation, curve: Curves.easeInOut),
|
||||
child: DecoratedBox(
|
||||
decoration: const BoxDecoration(color: Colors.white),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user