Flutter – Navigieren Sie zu einem neuen Bildschirm und löschen Sie alle vorherigen Bildschirme
Lesezeit: 2 Minuten
ich benutzte Navigator.push bis zu 6 Bildschirme, um zur Zahlungsseite zu gelangen. Nach der Zahlung möchte ich auf die Seite „Zahlung erfolgreich“ gehen und dann alle vorherigen Bildschirme entfernen, dh mit der Schaltfläche „Zurück“ kehren Sie zum allerersten Bildschirm zurück.
HINWEIS: Ich habe es versucht pushReplacementNamed und es funktioniert nicht.
Ich habe pushReplacementNamed versucht und es funktioniert nicht. Da hast du wohl was falsch gemacht.
– Günter Zöchbauer
7. Oktober 2018 um 13:41 Uhr
Nein habe ich nicht. verwenden pushRepalcementNamed führt mich zu einer neuen Route, aber wenn ich die Schaltfläche „Zurück“ verwende, wechselt sie zur letzten benannten Route, anstatt dass die Schaltfläche „Zurück“ nicht funktioniert.
– Kingsley CA
7. Oktober 2018 um 13:47 Uhr
Vielleicht möchten Sie weitere frühere Routen wie entfernen docs.flutter.io/flutter/widgets/Navigator/… Ihre Frage enthält jedoch keine Informationen, mit denen Sie Ihr Problem diagnostizieren können.
– Günter Zöchbauer
7. Oktober 2018 um 13:50 Uhr
Ja. Habe es jetzt erst herausgefunden. Trotzdem danke.
– Kingsley CA
7. Oktober 2018 um 13:54 Uhr
Ich habe es herausgefunden. Es war der Navigator.pushAndRemoveUntil Funktion. Wo ich die passieren musste PaymentSuccessful Widget als newRouteund der "/Home" route als Prädikat
Können Sie bitte erklären, was der Zweck der Verwendung ist ModalRoute.withName('/Home') um deine Antwort zu vervollständigen?
– iDecode
6. Januar 2021 um 15:55 Uhr
@iDecode Sie können hier auf die Dokumentation verweisen [api.flutter.dev/flutter/widgets/Navigator/… the ModalRoute.withName(‘/Home’) is used to ensure that when the back button is pressed the user is navigated to the “/Home Screen” -> “To remove routes until a route with a certain name, use the RoutePredicate returned from ModalRoute.withName”
– Chichebe
Nov 22, 2021 at 8:46
If you want to navigate to the root Screen, the replace "/Home" with "/". And you can also provide route arguments to MaterialPageRoute() using his props settings: RouteSettings(arguments: myArgs)
– Manu
Nov 30, 2021 at 13:02
to add more, here is the video explaining exactly this function: Tutorial Link
– Hardik
Jan 19, 2022 at 12:58
Accepted Answer is correct. But you can try this too.
Navigator.pushAndRemoveUntil<dynamic>(
context,
MaterialPageRoute<dynamic>(
builder: (BuildContext context) => YourPageNameGoesHere(),
),
(route) => false,//if you want to disable back feature set to false
);
even simpler and I think a better way would be to do it this way,
this Schedules a callback for the end of the current persistent frame,to push to route /loginPage and removes all the previous routes,this way you can make sure that all the frames are rendered and then you navigate to next page.
Ich habe pushReplacementNamed versucht und es funktioniert nicht. Da hast du wohl was falsch gemacht.
– Günter Zöchbauer
7. Oktober 2018 um 13:41 Uhr
Nein habe ich nicht. verwenden
pushRepalcementNamed
führt mich zu einer neuen Route, aber wenn ich die Schaltfläche „Zurück“ verwende, wechselt sie zur letzten benannten Route, anstatt dass die Schaltfläche „Zurück“ nicht funktioniert.– Kingsley CA
7. Oktober 2018 um 13:47 Uhr
Vielleicht möchten Sie weitere frühere Routen wie entfernen docs.flutter.io/flutter/widgets/Navigator/… Ihre Frage enthält jedoch keine Informationen, mit denen Sie Ihr Problem diagnostizieren können.
– Günter Zöchbauer
7. Oktober 2018 um 13:50 Uhr
Ja. Habe es jetzt erst herausgefunden. Trotzdem danke.
– Kingsley CA
7. Oktober 2018 um 13:54 Uhr