ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DART] Future.delayed // Timer
    Flutter/DART 2023. 8. 31. 14:25

    03. 타이머

    Future.delayed와 Timer

    • Future.delayed: Future 객체를 반환한다.
      • 주어진 시간 만큼 지연 후 함수를 실행한다.
      • 내부적으로는 타이머를 사용하지만 외부에 노출되지 않으므로 중간에 취소하거나 재시작하거나 할 수 없다.
      • Future 객체를 반환하므로 await 키워드를 사용해서 지연 시간을 보장할 수 있다.
    • Timer: 아무 것도 반환하지 않는다.
      • 주어진 시간 만큼 지연 후 함수를 실행한다.
      • 주기적인 타이머 알림을 받을 수 있다.
      • 타이머를 종료(cancel)할 수 있다.

    다트: Future.delayed

    Future.delayed(기간, 함수); 형식으로 호출한다.

    • 기간: Duration 객체, 보통 const 상수로 만든다.
    • 함수: 익명함수
    void main() {
      Future.delayed(const Duration(seconds: 2), () {
        print('passed 2 sec.');  // 2초 후 출력
      });
    }
    

    2초 후에 passed 2 sec 문자열을 출력한다.

    플러터: Timer

    타이머를 종료(cancel)한다.

    void main() {
      Timer t = Timer(Duration(seconds: 1), () {
        print('passed 2 sec'); // 출력 안 됨
      });
      t.cancel();  // 곧바로 취소되어 출력 안 됨
    }
    

    주기적인 타이머 알림을 받는다.

    Timer.periodic(Duration(seconds: 5), (timer) {
        print(DateTime.now()); 
    });

     

     

    바로 위 코드블럭의

    Timer.periodic 메서드를 보면, 두번째 매개변수는 콜백함수이고,
    timer 라는 변수가 인자로 들어가있다.

     

    timer라는 변수를 선언하지도 않았는데 뭔지 알고 쓰는건가? 싶었는데, 
    저 변수는 Timer 클래스로 만든 인스턴스 그 자체를 가리킨다고 한다

     

    즉,

      Timer t = Timer.periodic(
        const Duration(seconds:2), 
        (t) => print(DateTime.now())
        );

    이 코드와 같다고 보면 됨.

    그러므로 저 변수의 이름은 단순히 이름일 뿐, 마음대로 변경해도 스스로를 가리키는 것에는 변함 없기 때문에 마구마구 변경해도 된다

    'Flutter > DART' 카테고리의 다른 글

    DART LATE  (0) 2023.08.30
    DART 기초문법  (0) 2023.08.30
Designed by Tistory.