FLUTTER Dispose

김동욱·2024년 1월 23일
0

dispose

리소스 해제나 메모리 누수를 방지하기 위한 목적

1 StatefulWidget에서 사용되는 컨트롤러(Controller): 예를 들어,

TextEditingController, AnimationController, ScrollController 등은 사용이 끝난 후
dispose 메서드를 호출 리소스를 해제

@override
void dispose() {
  myController.dispose();
  super.dispose();
}

2 비동기 작업을 수행하는 객체나 서비스:

Future나 Stream을 사용하는 경우, 해당 비동기 작업이 완료된 후에는 dispose 메서드에서 클린업을 수행해야 합니다.

@override
void dispose() {
  myFuture.cancel(); // 예시: Future를 취소
  super.dispose();
}

3 메모리에 저장된 데이터나 자원 관리:

예를 들어, 파일이나 데이터베이스와 같은 외부 자원에 접근하는 경우, 해당 자원을 정리하고 닫아주는 작업이 필요할 수 있습니다.

@override
void dispose() {
  myDatabase.close(); // 데이터베이스 연결을 닫음
  super.dispose();
}

4 Custom Widgets에서의 리소스 해제:

만약 사용자가 정의한 커스텀 위젯이 리소스를 사용하고 있다면, 해당 위젯 내에서 dispose 메서드를 정의하여 리소스를 해제해야 합니다.

@override
void dispose() {
  // 커스텀 위젯에서 사용한 리소스 해제
  super.dispose();
}
profile
백엔드 개발자

0개의 댓글