243 votes

Flutter : comment quitter l'application de manière programmatique ?

Comment puis-je fermer de manière programmatique une application Flutter. J'ai essayé de faire sauter le seul écran mais cela donne un écran noir.

12voto

Je préfère utiliser

 Future.delayed(const Duration(milliseconds: 1000), () {
        SystemChannels.platform.invokeMethod('SystemNavigator.pop');
      });

Bien que exit(0) fonctionne également, l'application se ferme brusquement et n'est pas agréable à regarder, ce qui donne l'impression que l'application s'est écrasée.

 Future.delayed(const Duration(milliseconds: 1000), () {
       exit(0);
      });

0 votes

Pourquoi SystemChannels.platform.invokeMethod('SystemNavigator.pop') et non pas simplement SystemNavigator.pop(); ?

10voto

pinkfloyd Points 104

La seule solution que j'ai vue jusqu'à présent, acceptée dans les deux magasins est :

pour Android :

SystemChannels.platform.invokeMethod('SystemNavigator.pop');

pour ios :

il n'y a pas de possibilité de fermer l'application MAIS vous pouvez la déplacer en arrière plan avec https://pub.dev/packages/minimize_app comme :

MinimizeApp.minimizeApp();

Profitez-en !

0 votes

Pourquoi SystemChannels.platform.invokeMethod('SystemNavigator.pop') et non pas simplement SystemNavigator.pop(); ?

3voto

Herman Points 79

Cela a marché pour moi ;

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),
      ), 
  );
}

2voto

MatraxDilgil Points 1

J'appelle _getOutOfApp ce n'est pas un paquet ;

    void _getOutOfApp {

      if (Platform.isIOS) {

        try {
          exit(0); 
        } catch (e) {
          SystemNavigator.pop(); // for IOS, not true this, you can make comment this :)
        }

      } else {

        try {
          SystemNavigator.pop(); // sometimes it cant exit app  
        } catch (e) {
          exit(0); // so i am giving crash to app ... sad :(
        }

      }
    }

1voto

ali sampson Points 11

Cela a fonctionné pour moi. Créez une fonction, et dans votre onPressed il suffit d'appeler cette fonction. Puisque exit(0) n'est pas recommandé par apple pour iOS apps, j'ai opté pour cette bibliothèque ici : https://pub.dev/packages/minimize_app . Vous trouverez ci-dessous un extrait de code :

void closeApp(){
   if(Platform.isAndroid){
       SystemChannels.platform.invokeMethod('SystemNavigator.pop');            
   }else{
       MinimizeApp.minimizeApp();
   }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X