![](/img/trans.png)
[英]how controllers in flutter can rebuild widget without calling 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.