import 'package:flutter/material.dart';

Function pageBuilder = (Widget widget) => (
      BuildContext context,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
    ) =>
        widget;

Function transitionsBuilder = (
  BuildContext context,
  Animation<double> animation,
  Animation<double> secondaryAnimation,
  Widget child,
) {
  return SlideTransition(
    position: Tween<Offset>(
      begin: const Offset(0, 1),
      end: Offset.zero,
    ).animate(animation),
    child: Container(
      decoration: animation.isCompleted
          ? null
          : BoxDecoration(
              border: Border(
                bottom: BorderSide(
                  color: Colors.black,
                ),
              ),
            ),
      child: child,
    ),
  );
};

class SlideBottomRoute extends PageRouteBuilder {
  SlideBottomRoute(this.widget)
      : super(
          transitionDuration: Duration(milliseconds: 150),
          pageBuilder: pageBuilder(widget),
          transitionsBuilder: transitionsBuilder as Widget Function(
              BuildContext, Animation<double>, Animation<double>, Widget),
        );

  final Widget widget;
}
