page_animation_transition 패키지는 여러 플랫폼에서 Flutter 애플리케이션에 부드럽고 시각적으로 매력적인 페이지 전환을 구현할 수 있도록 도와줍니다. 단일 명령어로 간편하게 통합 가능하며, 화면 간의 동적 진입 및 탈출 애니메이션을 추가하여 사용자 경험을 향상시킵니다. 이 패키지는 Android, iOS, Web, macOS, Windows, Linux를 지원하여 크로스플랫폼 프로젝트에 매우 유연합니다. 최소한의 코드 작업으로 정교하고 현대적인 네비게이션 흐름을 제공하려는 앱에 이상적입니다.
사용 사례
모바일 앱에 애니메이티드 화면 전환 추가하기
웹 애플리케이션 탐색 개선
매력적인 온보딩 경험 만들기
시각적 피드백을 통한 사용자 참여도 향상
부드러운 라우팅을 갖춘 인터랙티브 대시보드 설계
사용자 정의 슬라이드, 페이드 또는 스케일 효과 구현
주요 기능
다중 플랫폼 배포를 지원합니다
Flutter의 Navigator와의 간단한 통합
사전 정의된 애니메이션 유형(슬라이드, 페이드, 스케일)
사용자 정의 가능한 전환 지속 시간 및 곡선
가볍고 구성하기 쉬움
사용자 정의 애니메이션 로직을 위한 확장 가능
적합한 대상
빠른 전환 효과를 원하는 플러터 개발자
세련된 UI/UX가 필요한 앱
데스크톱 및 모바일을 대상으로 한 크로스 플랫폼 프로젝트
인터랙티브 탐색을 갖춘 디자인 중심 애플리케이션
Flutter 애니메이션을 배우는 초보자
고려 사항
저사양 기기에서 성능 테스트가 필요할 수 있습니다
고급 사용자 정의 없이 기본 애니메이션 프리셋에 국한됨
Flutter의 애니메이션 프레임워크 안정성에 의존합니다
매우 복잡하거나 고유한 전환 로직에 적합하지 않습니다
화면 간 일관된 디자인 언어와 함께 사용하는 것이 가장 좋습니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
page_animation_transition
A lightweight Flutter package for adding beautiful, customizable page route
transition animations — slide, fade, scale, rotate, size, and diagonal
transitions — to Navigator.push, named routes, and declarative routers like
go_router, with full control over duration and easing curves. No
boilerplate PageRouteBuilder or Page code required.
If you're searching for a Flutter page transition animation package, a
custom Flutter route transition, a way to animate Navigator push/pop
transitions, or custom page transitions for go_router, this package
gets you there in one line of code.
18 ready-made transitions — slide (4 directions), slide + fade, fade,
scale, scale + fade, rotate, rotate + fade, size, and 4 diagonal slides —
covering the vast majority of page-transition needs out of the box.
One-line usage — wrap any page in PageAnimationTransition instead of
hand-rolling a PageRouteBuilder with Tweens and AnimatedBuilders.
Fully customizable timing — set duration, reverseDuration, curve,
and reverseCurve per navigation call, so transitions match your app's
motion design instead of a fixed default.
Works with every routing strategy — imperative Navigator.push, named
routes via onGenerateRoute, and declarative Navigator 2.0 routers such as
go_router, auto_route, Beamer, routemaster, and VRouter
via the bundled PageAnimationTransitionPage.
Zero extra dependencies — built entirely on Flutter's own
PageRouteBuilder, Page, Tween, and transition widgets, so it stays
small and has nothing extra to break or bloat your app.
Extensible — implement PageAnimationInterface to plug in your own
custom transition alongside the built-in ones.
Installation
Add page_animation_transition to your pubspec.yaml:
Using with go_router and other Router-based navigation
For apps built on Flutter's declarative Navigator 2.0 Router API — including
go_router, auto_route, Beamer, routemaster, and VRouter —
use PageAnimationTransitionPage instead of PageAnimationTransition. It's a
standard Page
implementation, so it plugs into any router that builds a list of Pages,
with no dependency on go_router (or any other router package) required.
PageAnimationTransitionPage supports the same duration, reverseDuration,
curve, and reverseCurve customization as PageAnimationTransition (see
Customizing duration and curves), plus
maintainState, fullscreenDialog, opaque, barrierDismissible,
barrierColor, and barrierLabel for full parity with MaterialPage and
go_router's CustomTransitionPage.
A runnable go_router example lives in
example/lib/go_router_main.dart — run it
with flutter run -t lib/go_router_main.dart from the example/ directory.
Example app
A complete, runnable example with a button for every transition (including a
custom duration/curve demo) lives in the example/ directory. Clone
this repository and run:
How do I add a page transition animation in Flutter?
Wrap the page you're navigating to in a PageAnimationTransition and pass it
to Navigator.push (or return it from onGenerateRoute) instead of using
MaterialPageRoute — see Quick start.
Can I control how fast the transition animates?
Yes — pass duration (and optionally reverseDuration) to
PageAnimationTransition. See Customizing duration and curves.
Can I use an easing curve like Curves.easeInOut or a bounce effect?
Yes — pass curve and, if you want a different easing on pop, reverseCurve.
Can I write my own custom transition?
Yes — implement PageAnimationInterface's single animate method and pass an
instance of your class as pageAnimationType.
Does this work with auto_route, Beamer, routemaster, or VRouter?
Yes — PageAnimationTransitionPage is a plain Page<T> with no dependency on
go_router, so it works with any router that builds a list of Pages,
including auto_route, Beamer, routemaster, and VRouter.
Does this replace Navigator or go_router?
No — PageAnimationTransition (imperative) and PageAnimationTransitionPage
(declarative) plug directly into Flutter's existing routing APIs. Neither
changes how you manage routes, only how they animate.
Support this project
If this package saved you time, consider:
Starring the repository on GitHub —
it helps other Flutter developers discover the package.
Issues and pull requests are welcome on
GitHub. If
you'd like to add a new transition, implement PageAnimationInterface in
lib/animations/ following the existing examples and add a widget test in
test/.