Flattern wie kann ich den Circularprogress-Indikator ausblenden oder schließen [duplizieren]

Dec 18 2020

Ich rufe einfach einige Daten von der API ab. Ich muss den Loader anzeigen, bis die API geladen ist. Das Problem ist, dass der Loader einwandfrei funktioniert, aber ich weiß nicht, wie ich ihn schließen kann.

Mein 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


        }
      }

Antworten

UmaizKhan Dec 18 2020 at 19:02

Willkommen bei Stackoverflow :)

Sie können dies mit diesem Trick Navigator.pop (Kontext) tun. Ich denke, Sie müssen sich verstecken, wenn es erfolgreich ist, wenn Sie dies tun können

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

Wenn Sie das, das Dialogdas enthält CircularProgressIndicator, sofort nach Abschluss aller Vorgänge schließen möchten, können Sie den folgenden Code verwenden:

Navigator.pop(context);

Was in Ihrem Beispiel implementiert aussehen würde:

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
     }
   }
 }