簡體   English   中英

如何在不調用 flutter 中的 setState 方法的情況下禁用按鈕?

[英]How can I disable a button without calling the setState method in flutter?

您好我想在用戶輸入少於 10 位的手機號碼時禁用凸起按鈕。 用戶輸入 10 位手機號碼后,它將被啟用,但如果號碼小於 10 位,它將再次被禁用。 目前我正在借助一組 state 方法來做到這一點。但我認為這是不可行的,因為構建 function 被一次又一次地調用。 這是我的代碼。

TextFormField(
                    onChanged: (val){
                      number='+91' + val;
                      if(number.length==13){

                        setState(() {
                          numberlessthanten=false;
                        });
                      }
                         else{

                        setState(() {
                          numberlessthanten=true;
                        });

                      }
                    },

child: RaisedButton(

                        color: Colors.redAccent,
                        onPressed: numberlessthanten ? null : (){
                          print(number);
                          _sumbit();

                        },

                            child: Text('Send Code'),
                      ),

在您的 textformfield 使用 controller.TextFormField TextFormField( controller = _controller )現在在您的凸起按鈕中。

RaisedButton(
 onPressed: _controller.length <10?null:(){}
  child:Text("send Code")
 )

你不能。 不應該。 正在更改 state。您可能會發現一個隱藏setState調用的功能,因此您不會直接在代碼中使用它,但最后,該功能調用setState

多次調用構建 function 是完全正常的。

對於性能的考慮, 文檔中有一段。

暫無
暫無

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

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