J'implémente un flux d'authentification dans mon application Flutter.
Après une tentative de connexion, CheckAuth (qui vérifie si un utilisateur est connecté ou non, puis ouvre l'écran d'accueil ou l'écran d'inscription en conséquence) est ouvert avec le code suivant:
void _signIn() async {
await _auth
.signInWithEmailAndPassword(
email: _userEmail.trim(), password: _userPassword.trim())
.then((task) {
// go to home screen
if (task.getIdToken() != null) {
setState(() {
Navigator.pushReplacement(
context,
new MaterialPageRoute(
builder: (BuildContext context) => new CheckAuth()));
});
} else {
print("Authentication failed");
}
});
}
Problème: je peux me connecter avec succès à l'application, mais si je tape sur le bouton de retour une fois que je me suis connecté, l'écran de connexion (alors que je m'attends à ce qu'il quitte l'application) s'affiche.
Question: Comment passer d’un écran à l’autre dans Flutter sans le retour?
Dois-je en quelque sorte supprimer l'historique du navigateur? Ou n'utilisez pas du tout le navigateur? J'ai essayé la méthode Navigator.replace, mais cela ne semblait pas fonctionner.
Vous devez également utiliser Navigator.pushReplacement
lorsque en quittant l'écran d'authentification. Pas seulement lors de la redirection vers la page de connexion.
Vous devez utiliser
Navigator
.of(_context)
.pushReplacement(new MaterialPageRoute(builder: (BuildContext context) => page));
Où _context
est un objet de BuildContext
Et page
est la page à laquelle vous avez dirigé.