Flutter bagaimana saya bisa menyembunyikan atau menutup indikator Circularprogress [duplikat]

Dec 18 2020

Saya hanya mengambil beberapa data dari API yang saya butuhkan adalah menampilkan loader sampai API dimuat. Masalahnya adalah loader berfungsi dengan baik tetapi saya tidak tahu bagaimana cara menutupnya.

Kode saya

   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


        }
      }

Jawaban

UmaizKhan Dec 18 2020 at 19:02

Selamat datang di Stackoverflow :)

Anda dapat melakukan ini dengan trik ini Navigator.pop (konteks). Saya pikir Anda perlu bersembunyi ketika sukses jika kondisi Anda dapat melakukan seperti ini

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

Jika Anda ingin menutup Dialogyang berisi CircularProgressIndicator, segera setelah semua operasi selesai, Anda dapat menggunakan kode berikut:

Navigator.pop(context);

Yang, diimplementasikan dalam contoh Anda, akan terlihat seperti:

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