Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- JQ
- UI/UX
- printf
- firebase
- java 출력
- scss
- unity
- LLM
- develop
- 앱심사
- abap
- 자바스크립트
- npm
- 배포
- riverpod
- DART
- lifecycle
- Flutter
- Clean Architecture
- java
- 자바 출력 방식
- 자바 포맷 출력
- 단축키
- nodejs
- react
- 엡
- println
- ListView
- java 콘솔 출력 차이
- JS
Archives
- Today
- Total
guricode
[Flutter]스로틀링, 디바운싱 본문
스로틀링과 디바운싱은 사용자 이벤트 제어성능 최적화에 관한 내용이다.
스로틀링(Throttling)은 이벤트가 자주 발생해도 일정시간 간격으로만 실행되도록 제한하는기법이다.
스크롤 드래그 api 호출 등에서 과도한 호출을 막아 성능을 최적하 하기 위함이다.
보통 마지막 실행후 일정시간이 지난 후 실행하도록 하는 방법을 사용한다.
import 'dart:async';
class Throttler {
Throttler(this.delay);
final Duration delay;
Timer? _timer;
bool _ready = true;
void run(void Function() action) {
if (_ready) {
_ready = false;
action();
_timer = Timer(delay, () => _ready = true);
}
}
}
// 사용 예시
final throttler = Throttler(const Duration(seconds: 1));
// 예: 스크롤 이벤트나 버튼 클릭 제한
onPressed: () => throttler.run(() {
print('1초에 한 번만 실행됩니다.');
});
디바운싱(Debouncing)은 이벤트가 연속적으로 발생하면 마지막 이벤트 이후 일정 시간이 지나야 실행되는 기법이다.
사용자가 입력을 빠르게 연속적으로 할때, 마지막 입력이 끝난 뒤 한번만 처리하기 위해 사용한다.
이벤트가 계쏙 들어오면 타이머를 리셋하고, 입력이 멈춘 위 동작을 실행한다.
import 'dart:async';
class Debouncer {
Debouncer(this.delay);
final Duration delay;
Timer? _timer;
void run(void Function() action) {
_timer?.cancel();
_timer = Timer(delay, action);
}
}
// 사용 예시
final debouncer = Debouncer(const Duration(milliseconds: 500));
// 예: 검색창 입력
onChanged: (text) {
debouncer.run(() {
print('사용자 입력 완료: $text');
});
};
스로틀링은 이벤트 발생 빈도를 “주기적으로 제한”하고,
디바운싱은 “마지막 이벤트 후 일정 시간이 지나야 실행”되는 방식이다.
'앱 > Flutter&Dart' 카테고리의 다른 글
| [Flutter] 네이티브 기능과 연결하기 위한 패키지 사용 경험 (0) | 2025.10.20 |
|---|---|
| [Flutter]무한 스크롤을 구현하는 방법,당겨서 새로고침 기능을 구현하는 방법 (0) | 2025.10.20 |
| [Flutter] 애니메이션, curve 와 duration ,암시적, 명시적 애니메이션의 차이 (0) | 2025.10.20 |
| [Flutter] 위젯트리와 Buildcontext (0) | 2025.10.20 |
| [Flutter] MVVM패턴 (0) | 2025.10.20 |