Flutter の pop による戻り値
Flutter のルーティングで push / pop する時の扱い
スタックでのルーティング
概略
- push 時に return で受け取りたい型を指定
- pop 時に指定された型を return
- pop の引数を省略すると null が返る
- 戻るボタンでも null が返るので、必ず考慮が必要
ページ遷移(進む)
push で積む。
Navigator.of(context).push
を使う。
return で受け取りたい型を指定してやればいいので、 int を指定してみる。
int ret = await Navigator.of(context) .push(MaterialPageRoute<int>(builder: (BuildContext context) { return SecondPage(); }));
ページ遷移(戻る)
pop でスタックから取り除く。
Navigator.of(context).pop
を使う。
この時、 push 側で受け取りたい戻り値を、 pop() の引数で渡す。
int _counter; ~~ 中略 ~~ Navigator.of(context).pop(_counter)
引数を省略すると null が返される。
デフォルトの戻る機能
OS の戻る機能を使うと、引数を省略した時と同じで null が返される。
なのでそこは考慮しておく必要がある。逆に言えば、戻る機能と同じ挙動をさせたければ、引数を省略して null を返せばいい。
コードサンプル
全体のコード