【问题标题】:Flutter how can i hide or dismiss Circularprogress indicator [duplicate]颤动我如何隐藏或关闭循环进度指示器[重复]
【发布时间】:2021-03-29 01:59:50
【问题描述】:

我只是从 API 中获取一些数据,我需要在加载 API 之前显示加载器。问题是加载器工作正常,但我不知道如何关闭它。

我的代码

   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


        }
      }

【问题讨论】:

标签: flutter


【解决方案1】:

欢迎来到 Stackoverflow :)

你可以通过这个技巧 Navigator.pop(context) 做到这一点。我认为你需要隐藏当它成功的条件下你可以这样做

    if(data['status'].toString() == "success"){
       Navigator.pop(context)
    }

【讨论】:

    【解决方案2】:

    如果您要在所有操作完成后立即关闭包含CircularProgressIndicatorDialog,您可以使用以下代码:

    Navigator.pop(context);
    

    在您的示例中实现,如下所示:

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

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 2011-02-21
      • 1970-01-01
      • 2018-11-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多