– 左から右にスライド遷移する
– 戻る動作(pop)にも自然なスライド
class TopMapRoute extends GoRouteData {
const TopMapRoute();
static const String path = '/top_map';
@override
Page buildPage(BuildContext context, GoRouterState state) {
return CustomTransitionPage(
key: state.pageKey,
child: TopMapScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
// 画面遷移(push)時:右 → 左にスライド
final enterTween = Tween(
begin: const Offset(1, 0), // 新しい画面が右から出てくる
end: Offset.zero,
).chain(CurveTween(curve: Curves.easeOutCubic));
// 戻る(pop)時:左 → 右にスライドして前の画面が戻る
final exitTween = Tween(
begin: Offset.zero,
end: const Offset(-1, 0),
).chain(CurveTween(curve: Curves.easeOutCubic));
return SlideTransition(
position: animation.drive(enterTween),
child: SlideTransition(
position: secondaryAnimation.drive(exitTween),
child: child,
),
);
},
transitionDuration: const Duration(milliseconds: 350),
);
}
}
build() は書かなくてOK
buildPage() をオーバーライドすると
build() の代わりにそのページ構築ロジックが使われる