任意の画面にいきなり遷移
WidgetBuilder とともに MaterialPageRoute という router を Navigator.push すれば良い。
Navigator.push(context, MaterialPageRoute(builder: (context) {
return MyScreen(foo: "bar");
}));
これでどこからでも好きな画面に遷移できる。
通常の画面遷移
ちなみにきちんと名前をつけてある route はこのように遷移する。
Navigator.pushNamed(context, '/settings')
このとき Navigator は自身に登録されているルーティング情報から適切に Route を作り遷移する。
onUnknownRoute
Navigator を初期化するときに onUnknownRoute というのを指定することができる。MaterialApp からでも指定することができる。名前から推測できるとおり指定された名前に対応する Route が存在しなかったときに使われる。
続く
/pages/1 みたいなルーティングは既存の Navigator では実現できないように見えるけどどうなんだろ?🤔
↑context から Navigation を取得して現在の path かなんかを取得できるだろうから、それを使えばできそうやな。