FlutterでNavigator.push(context)
して遷移した先の画面で元の画面に戻るときにはNavigator.pop(context)
をアイコンに設置したりエッジスワイプしたりしますよね。
通常のスワイプでも戻したかったのでやり方を見つけるのに少々苦労しましたがなんとかできました。
GestureDetector(
onHorizontalDragUpdate: (details) {
if (details.delta.dx > 18) {
Navigator.pop(context);
}
},
child: ・・・,
);
このようにGestureDetector.onHorizontalDragUpdate
を設定して横方向のスワイプをトリガーにnavigator.pop(context)
を実行するようにしました。
details.delta.dx
はスワイプの速度で、正の向きが左→右です。しきい値として設定した18
を超えるとnavigator.pop(context)
を実行します。この値は実機で触りながら調整しました。
参考
Flutter公式ドキュメント onHorizontalDragUpdate
https://api.flutter.dev/flutter/widgets/GestureDetector/onHorizontalDragUpdate.html