これが明らかな場合は許してくださいFlutterの新機能ですが、ドキュメントを読み、ナビゲーターのオプションをいくつか試しましたが、どれも希望どおりに機能しません。問題セット:ログイン/認可/登録プロセスを処理する複雑な(まあ、半複雑な)一連の画面などがあります。これは、ルートスタックで3レベルまたは4レベルに低下する可能性があります。これで問題ありません。心配する必要はありません。
問題は、(いくつかの異なるパスから)成功したログインイベントを取得し、「ホーム」ページに移動したいときに発生します。ルートツリーの新しい「ルート」になるはずのホームページに到達したら(これは正しい用語ではないに違いありませんが、その考え方は確かです)。
したがって、1/2/3または4レベル下になり、スタック全体を(任意の遷移イベントで)「ポップ」して、新しい最上位ルートに置き換えたい場合、どのような魔法のナビゲーターセットまたはメソッドがきれいにこれを行いますか?
私の現在の(恐ろしい)アプローチは、レベルを「pop()」に渡してNavigator.pushReplacementNamed()呼び出しを実行することです(これらはすべて名前付きルートです)が、これは一般的な解決策ではありません(レベルの数を正確に把握する必要があります)さらに悪いことに、それは画面上で各pop()の1秒間に「ポップ」への「アニメーション」遷移を引き起こします。
TIA!
ナビゲーターはpop
だけではありません。次のようなことができます。
Navigator.pushNamedAndRemoveUntil(context, '/', (_) => false);
これは基本的にホームをプッシュして削除しますall新しいルートの背後にあるルート
このコードを試してください:
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (BuildContext context) => YourInitialPage(),
),
ModalRoute.withName('/'));
トランジションが必要ない場合は、MaterialPageRoute
クラスをオーバーライドまたは拡張できます