freezer/lib/page_routes/fade.dart
2023-10-08 12:53:22 +02:00

45 lines
1.3 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:freezer/page_routes/basic_page_route.dart';
import 'package:freezer/ui/animated_blur.dart';
class FadePageRoute<T> extends BasicPageRoute<T> {
final WidgetBuilder builder;
final bool blur;
FadePageRoute({
required this.builder,
this.blur = false,
transitionDuration = const Duration(milliseconds: 300),
maintainState = true,
RouteSettings? settings,
}) : super(
transitionDuration: transitionDuration,
maintainState: maintainState,
settings: settings,
);
@override
Widget buildPage(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) =>
builder(context);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
final baseTransition = FadeTransition(
opacity: animation,
child: child,
);
if (blur) {
return Stack(children: [
Positioned.fill(
child: AnimatedBlur(
animation: animation,
multiplier: 10.0,
child: const SizedBox())),
baseTransition,
]);
}
return baseTransition;
}
}