WinGyu_coder
Flutter 플러터, dispose 사용법 알아보기 본문
Flutter에서 dispose
메서드는 StatefulWidget
의 상태 객체 (State<T>
)에서 사용되며, 위젯이 영구적으로 제거될 때 호출됩니다. 이 메서드는 리소스를 정리하거나, 리스너를 해제하거나, 애니메이션 컨트롤러를 중지하는 등의 작업에 사용됩니다. dispose
는 Flutter의 위젯 수명 주기의 일부로, 메모리 누수를 방지하고 앱의 성능을 향상시키는 데 중요한 역할을 합니다.
dispose
사용법:
리스너 해제: 위젯이 더 이상 사용되지 않을 때, 예를 들어
TextEditingController
또는 다른 종류의 리스너를 해제해야 할 때dispose
를 사용합니다.애니메이션 컨트롤러 정리:
AnimationController
와 같은 애니메이션 리소스가 있을 경우, 위젯이 제거될 때 이를 정리해야 합니다.스트림 구독 해제: 스트림에 대한 구독을 관리할 때, 위젯이 사라질 때 구독을 해제해야 합니다.
타이머 및 기타 콜백 취소: 타이머나 Future 등, 일정 시간 후에 실행되도록 예약된 작업이 있는 경우,
dispose
에서 이를 취소해야 합니다.
예제 코드:
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
TextEditingController _controller;
AnimationController _animationController;
@override
void initState() {
super.initState();
_controller = TextEditingController();
_animationController = AnimationController(
vsync: this,
duration: Duration(seconds: 1),
);
// 기타 초기화 작업...
}
@override
void dispose() {
// 리소스 해제, 리스너 해제, 애니메이션 컨트롤러 등을 여기서 정리합니다.
_controller.dispose();
_animationController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
// 위젯 구성...
}
}
이 예제에서는 TextEditingController
와 AnimationController
를 초기화하고, dispose
메서드에서 이들을 정리하고 있습니다. 이는 자원을 효율적으로 관리하고 메모리 누수를 방지하는 좋은 방법입니다.
dispose
메서드는 StatefulWidget
의 수명 주기 중 매우 중요한 부분입니다. 적절한 리소스 관리를 통해 앱의 안정성과 성능을 유지하는 데 도움이 됩니다.
'Flutter 플러터, Dart 다트' 카테고리의 다른 글
Flutter, Dart 플러터 함수 정의, void 사용과 사용 안하는 경우 비교 (0) | 2023.11.20 |
---|---|
Flutter, 플러터 ListView, separated 와 builder 차이점 (0) | 2023.11.19 |
Flutter 플러터 화살표 함수 () =>, 블록 바디 함수 () {} 차이점 (0) | 2023.11.11 |
Flutter, 플러터로 직렬통신하기, RS-485, serial_communication (0) | 2023.11.08 |
Flutter 플러터: mainAxisAlignment, crossAxisAlignment (가로,세로 정렬) (2) (0) | 2023.10.22 |