Как я могу отключить кнопку без вызова метода setState во флаттере? - PullRequest
0 голосов
/ 03 августа 2020

Привет, я хочу отключить поднятую кнопку всякий раз, когда пользователь вводит номер мобильного телефона меньше 10 di git. После того, как пользователь введет номер мобильного телефона 10 di git, он будет включен, но если номер станет меньше 10 di git, он снова будет отключен. В настоящее время я делаю это с помощью метода set state, но не думаю, что это возможно, поскольку функция сборки вызывается снова и снова. Это мой код.

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'),
                      ),

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вы не можете. И не должно. Вы меняете состояние. Вы можете найти функцию, которая скрывает вызов setState от вас, поэтому вы не добавляете ее напрямую в код, но, в конце концов, эта функция вызовет вызов setState.

Совершенно нормально вызывать функцию сборки несколько раз.

По соображениям производительности в документации есть параграф .

0 голосов
/ 03 августа 2020

В текстовом поле используйте контроллер. TextFormField( controller = _controller ) Теперь в вашей приподнятой кнопке.

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