Comment puis-je fermer par programme une application Flutter. J'ai essayé de faire apparaître le seul écran, mais il en résulte un écran noir.
Ci-dessous a parfaitement fonctionné avec moi dans Android
et iOS
, j'ai utilisé exit(0)
de Dart:io
import 'Dart:io';
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new ... (...),
floatingActionButton: new FloatingActionButton(
onPressed: ()=> exit(0),
tooltip: 'Close app',
child: new Icon(Icons.close),
),
);
}
UPDATE Jan 2019 La solution préférable est:
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
Comme décrit ici
Vous pouvez le faire avec SystemNavigator.pop()
.
Les réponses sont déjà fournies mais s'il vous plaît, ne les copiez pas simplement dans votre base de code sans savoir ce que vous faites:
Si vous utilisez SystemChannels.platform.invokeMethod('SystemNavigator.pop');
, notez que doc mentionne clairement:
Indique au navigateur système de supprimer cette activité de la pile et de revenir à l'activité précédente.
Sur iOS, les appels à cette méthode sont ignorés car les directives d'interface utilisateur d'Apple stipulent que les applications ne doivent pas se fermer.
Vous pouvez utiliser exit(0)
. Et cela mettra fin au processus Dart VM) immédiatement avec le code de sortie donné. Mais rappelez-vous que doc dit:
Cela n'attend pas que des opérations asynchrones soient terminées. Utiliser exit est donc très susceptible de perdre des données.
Quoi qu'il en soit, le doc a également noté SystemChannels.platform.invokeMethod('SystemNavigator.pop');
:
Cette méthode doit être préférée à l'appel de la méthode de sortie de Dart: io, cette dernière pouvant amener la plate-forme sous-jacente à agir comme si l'application s'était écrasée.
Alors, gardez à l'esprit ce que vous faites.
SystemNavigator.pop()
: Est-ce que ne fonctionne pas
exit(0)
: fonctionne mais Apple peut suspendre votre application car il est contre Apple = Directives d'interface humaine pour quitter l'application par programme.
SystemNavigator.pop()
: Fonctionne et constitue le RECOMMANDÉ moyen de quitter l'application.
exit(0)
: fonctionne également mais NON RECOMMANDÉ car il termine le processus de fléchette VM immédiatement et l'utilisateur peut penser que l'application vient de tomber en panne.