import 'package:flutter/material.dart'; class PublishRoute extends PopupRoute { PublishRoute({ required this.pageBuilder, this._barrierDismissible = true, this._barrierLabel, this._barrierColor = const Color(0x80000000), this._transitionDuration = const Duration(milliseconds: 500), this._transitionBuilder, super.settings, }); final RoutePageBuilder pageBuilder; @override bool get barrierDismissible => _barrierDismissible; final bool _barrierDismissible; @override String? get barrierLabel => _barrierLabel; final String? _barrierLabel; @override Color get barrierColor => _barrierColor; final Color _barrierColor; @override Duration get transitionDuration => _transitionDuration; final Duration _transitionDuration; final RouteTransitionsBuilder? _transitionBuilder; @override Widget buildPage( BuildContext context, Animation animation, Animation secondaryAnimation, ) { return Semantics( scopesRoute: true, explicitChildNodes: true, child: pageBuilder(context, animation, secondaryAnimation), ); } @override Widget buildTransitions( BuildContext context, Animation animation, Animation secondaryAnimation, Widget child, ) { if (_transitionBuilder != null) { return _transitionBuilder(context, animation, secondaryAnimation, child); } return SlideTransition( position: animation.drive( Tween( begin: const Offset(0.0, 1.0), end: Offset.zero, ), ), child: child, ); } }