Flutter Comment puis-je masquer ou ignorer l'indicateur de progression circulaire [dupliquer]

Dec 18 2020

Je récupère simplement des données de l'API, ce dont j'ai besoin est d'afficher le chargeur jusqu'à ce que l'API soit chargée. Le problème est que le chargeur fonctionne correctement mais je ne sais pas comment le fermer.

Mon code

   Future<http.Response>  _trySubmit3() async {
      final isValid2 = _formKey3.currentState.validate();
      FocusScope.of(context).unfocus();

      if (isValid2) {
        showDialog(
            context: context,
            builder: (BuildContext context) {
              return Center(child: CircularProgressIndicator(
                valueColor: new AlwaysStoppedAnimation<Color>(Color(0xff00abb5)),

              ),);
            });


        print(smsOTP.text);
        print(userConfirmPassword.text);


        var url = '123/set_password.php?email=${userEmail.text}&password=${userConfirmPassword.text}';
        print(url);
        http.Response res = await http.get(url,
          headers: <String, String>{
            'token': 'my token'
          },

        );
        var data = json.decode(res.body.toString());
        print(data);
        print(data['status']);
        if(data['status'].toString() == "success"){

           // I need to close the loader here


        }
      }

Réponses

UmaizKhan Dec 18 2020 at 19:02

Bienvenue dans Stackoverflow :)

Vous pouvez le faire par cette astuce Navigator.pop (contexte). Je pense que vous devez vous cacher quand son succès est si condition que vous pouvez faire comme ça

    if(data['status'].toString() == "success"){
       Navigator.pop(context)
    }
StefanoA. Dec 18 2020 at 19:00

Si vous cherchez à ignorer le Dialogqui contient le CircularProgressIndicator, immédiatement après que toutes les opérations ont été terminées, vous pouvez utiliser le code suivant:

Navigator.pop(context);

Ce qui, implémenté dans votre exemple, ressemblerait à:

Future<http.Response>  _trySubmit3() async {
   final isValid2 = _formKey3.currentState.validate();
   FocusScope.of(context).unfocus();

   if (isValid2) {
     showDialog(
         context: context,
         builder: (BuildContext context) {
           return Center(child: CircularProgressIndicator(
             valueColor: new AlwaysStoppedAnimation<Color>(Color(0xff00abb5)),
           ),);
         });


     print(smsOTP.text);
     print(userConfirmPassword.text);

     var url = '123/set_password.php?email=${userEmail.text}&password=${userConfirmPassword.text}';
     print(url);
     http.Response res = await http.get(url,
       headers: <String, String>{
         'token': 'my token'
       },

     );
     var data = json.decode(res.body.toString());
     print(data);
     print(data['status']);
     if(data['status'].toString() == "success"){
         Navigator.pop(context); // closing the Dialog with the CircularProgressIndicator
     }
   }
 }