個人開発者が勉強がてらまとめているだけのサイトです

スワイプで戻る Swipe Back Gesture

画面の左端から右へ指で払うと、指に合わせて今の画面がずれ、前の画面に戻る。iPhone の基本操作。

別名
エッジスワイプ左端から戻るiOS の戻るジェスチャースワイプバックEdge SwipeInteractive Pop
動き
左端から右へ払う指に合わせて前の画面が出る途中でやめると戻る
作り方
標準ウィジェット Flutter に入っているものだけで作れます

本物の Flutter ウィジェットが動きます(初回は数秒かかります)

別タブで大きく開く ↗

どんなもの?

iPhone では戻るボタンを押すより、この操作で戻る人のほうが多いくらいの基本の動きです。

指に合わせて画面が動くので、途中でやめて元に戻すこともできます。

CupertinoPageRoute で開いた画面(iOS では MaterialPageRoute も既定でこの遷移)には最初から付いています。

指で触ったときだけ反応し、PC のマウスでは引けません。

戻れないようにした画面(PopScope の canPop: false)では、このジェスチャーも止まります。

こんなときに

  • iOS アプリの「一覧 → 詳細」のような、階層を降りていく画面

避けたい場面

  • 画面の左端から始まる横スワイプを、ほかの操作(ドロワーや横スクロール)に使っている画面

最小コード

// iOS 風の遷移で開けば、左端からのスワイプで戻れる
Navigator.of(context).push(
  CupertinoPageRoute(builder: (_) => const DetailPage()),
);

// Android でも同じ動きにしたいとき
ThemeData(
  pageTransitionsTheme: const PageTransitionsTheme(builders: {
    TargetPlatform.android: CupertinoPageTransitionsBuilder(),
  }),
)

使うウィジェット

CupertinoPageRouteCupertinoPageTransitionsBuilder

似ているもの・一緒に見たいもの

触ってみる ↗
画面遷移 iOS 風プッシュCupertino Page Transition

次の画面が右から滑り込み、前の画面は少しだけ左へずれて暗くなる。iPhone のアプリでおなじみの動き。

右から入る
触ってみる ↗
画面遷移 予測型「戻る」Predictive Back

戻るジェスチャーの途中で今の画面が縮み、後ろに前の画面がのぞく。離せば戻り、やめれば元に戻る。

引くと画面が縮む
触ってみる ↗
ナビゲーション 戻る前の確認Confirm Before Leaving

入力の途中で戻ろうとすると、「変更を破棄しますか?」と確認が出て、うっかり消えるのを防ぐ。

戻ろうとすると止まる