Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Flutterで任意の画面までPopUntilしたい

  1. 商品検索
  2. 商品詳細
  3. 会員登録 or ログイン
  4. ログインページ

こういうページ遷移の時、ログインページでログインが完了したら、2番の商品詳細に戻したい場合のTipsです。

2の商品詳細は、1の親画面でタップされたデータを元に画面を初期化するので、予めroutes:に画面遷移を登録できないので、MaterialPageRouteを毎回呼び出して画面遷移をしています。

PopUntilで戻るためには、route.settingsに遷移履歴をセットしておかないと任意の画面まで戻れないので、以下のようなコードを書いて都度RouteSettingを指定します。これで戻れます。

遷移する時

Navigator.of(context).push(MaterialPageRoute(
    //これ
    settings: RouteSettings(name: ItemDetailPage.routeName),
    builder: (context) => ItemDetailPage(item: item),
));

戻る時

 Navigator.of(context).popUntil((route) => route.settings.name == ItemDetailPage.routeName);

良く出来てるよ、Flutterって。ネイティブアプリを作る面倒さを味わっているから、本当に楽しくネイティブアプリが書ける。設計思想も勉強になる。