Flutter 인증 코드 가져오기 카운트다운 버튼

Flutter에는 다음과 같은 타이머 클래스 Timer가 있습니다.
Timer timer = new Timer(new Duration(milliseconds: 60), (){
        //       
      });

위 코드는 타이머를 실행하고 60초 후에 리셋을 실행하는 방법입니다.하지만 카운트다운 진도를 얻을 수 없습니다.그래서 우리는 주기적인 Timer를 만들 수 있다.
Timer = countDownTimer = new Timer.periodic(new Duration(seconds: 1), (timer){
        print(timer.tick);
      });

위에는 주기적으로 실행되는timer로 1초 간격으로 실행되기 때문에 우리는 이것을 이용하여 카운트다운 단추를 쓸 수 있다.
				String yzmText="     ";
                  new OutlineButton(
                    onPressed: yzmText=="     "?yzmGet:null,
                    padding: EdgeInsets.only(top: 0),
                    borderSide: new BorderSide(color: mainGreenColor),
                    highlightedBorderColor: mainGreenColor,
                    child: new Text(yzmText),
                    textColor: mainGreenColor,
                  ),

먼저 단추에 표시된 텍스트의 변수인 yzmText를 정의합니다.zai on Pressed에서 yzmText가 '인증코드 가져오기' 인지 여부에 따라 클릭 가능한지 판단하고, 클릭 가능한yzmGet 방법을 실행합니다.
	///     
  Timer countDownTimer;
  yzmGet() {
    countDownTimer?.cancel();//          
    countDownTimer = null;
      countDownTimer = new Timer.periodic(new Duration(seconds: 1), (t){
        setState(() {
          if(60-t.tick>0){//60-t.tick      ,    0,  yzmText     ,    yzmText,  countTimer
            yzmText = "${60-t.tick} ";
          }else{
            yzmText = '     ';
            countDownTimer.cancel();
            countDownTimer = null;
          }
        });
      });
  }

마지막으로 dispose에서 timer를 놓는 것을 잊지 마세요.
@override
    void dispose() {
    // TODO: implement dispose
    countDownTimer?.cancel();
    countDownTimer = null;
    super.dispose();

  }

마지막 마지막:
          flutter,  :187670882

좋은 웹페이지 즐겨찾기