Android端末では、戻るボタンが常に存在するため、戻る画面がない状態でそのボタンが押された場合はアプリが終了してしまう。
これを検出する方法を調べた。
結果: WillPopScope Widgetを用いる
その場合、 戻るボタンを WillPopScope Widgetで検出すると、Stackの2枚目以降に表示されている画面の場合は、左上のLeft Arrowを押下した場合でもonWillPop関数が呼び出されてしまう。
その場合、以下のようにして分岐させる。
onWillPop: () {
// 当該画面が最初の画面であった場合、trueが帰ってくる
bool _screenIsFirst = ModalRoute.of(context).isFirst;
if (_screenIsFirst) {
return showDialog(
context: context,
barrierDismissible: false,
builder: (context) => buildAlertDialogBackKeyOnPressed(context),
);
}
// onWillPopはFuture<bool>を返り値として指定しているため、以下の値を返す
return Future.value(true);
},