簡體   English   中英

如何禁用 flutter 中的按鈕

[英]how to disable button in flutter

我有一個提升的按鈕,我想在用戶點擊按鈕后禁用它,api 在這里被調用。 我試過設置狀態,但似乎不起作用。 我還能做些什么來禁用按鈕。

提示:我的想法是,一旦用戶點擊按鈕,用戶就不能再次點擊同一個按鈕。

這是我的代碼:

bool isEnable = false;
      ElevatedButton.icon(
                 style: ButtonStyle(
                    backgroundColor: MaterialStateProperty.all(
                        const Color.fromARGB(255, 53, 121, 87)),
                    padding:
                        MaterialStateProperty.all(const EdgeInsets.all(20)),
                    textStyle: MaterialStateProperty.all(const TextStyle(
                        fontSize: 14, color: Colors.black))),
                onPressed: qrdata.code != 9 && !isEnable 
                    ?  () async {   
                        //  setState(() {
                        //    isEnable == true;
                        //  });              
                        var url = Uri.parse(
                            '${ApiConstants.baseUrl}${ApiConstants.updateEndpoint}');
                        var responseData = await http.put(url,
                            headers: ApiConstants.headers);

                        if (responseData.statusCode == 202) {
                          print(jsonDecode(responseData.body).toString());
                          // ignore: use_build_context_synchronously
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                                builder: (context) => Dashboard(
                                      data: widget.data,
                                    )),
                          );
                       
                        }
                       //  });
                        // setState(() {
                        //  isEnable == false;
                        //   });
                    }
                    :null,

在下面應用此代碼:雙等號時出現錯誤。 檢查你的代碼,不要驚慌。

bool isDisabled = false;
      ElevatedButton.icon(
                 style: ButtonStyle(
                    backgroundColor: MaterialStateProperty.all(
                        const Color.fromARGB(255, 53, 121, 87)),
                    padding:
                        MaterialStateProperty.all(const EdgeInsets.all(20)),
                    textStyle: MaterialStateProperty.all(const TextStyle(
                        fontSize: 14, color: Colors.black))),
                onPressed: qrdata.code != 9 && !isDisabled 
                    ?  () async {   
                         setState(() {
                           isDisabled = true;
                         });              
                        var url = Uri.parse(
                            '${ApiConstants.baseUrl}${ApiConstants.updateEndpoint}');
                        var responseData = await http.put(url,
                            headers: ApiConstants.headers);

                        if (responseData.statusCode == 202) {
                          print(jsonDecode(responseData.body).toString());
                          // ignore: use_build_context_synchronously
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                                builder: (context) => Dashboard(
                                      data: widget.data,
                                    )),
                          );
                       
                        }
                        });
                         setState(() {
                         isDisabled = false;
                           });
                    }
                    :null,

請確保變量qrdata.codeisEnable在構建方法之外初始化。 每次調用 setState 時,一個或兩個變量都會被重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM