Flutter에서 dispose()
메서드는 위젯 트리에서 제거되기 전에 위젯의 리소스를 해제할 수 있는 기회를 제공합니다. 특히 StatefulWidget
에서 사용되며, 위젯이 메모리에서 제거될 때 호출됩니다.
dispose()
는 다음과 같은 경우에 유용합니다:
Stream
을 구독하고 있다면, dispose()
에서 구독을 취소해야 메모리 누수를 방지할 수 있습니다.AnimationController
, TextEditingController
등). 이러한 컨트롤러는 dispose()
에서 해제되어야 합니다.dispose()
에서 이를 해제해주는 것이 좋습니다.다음은 dispose()
메서드를 사용하는 간단한 예시입니다:
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
TextEditingController _textController;
void initState() {
super.initState();
_textController = TextEditingController();
}
void dispose() {
_textController.dispose(); // TextEditingController 리소스 해제
super.dispose();
}
Widget build(BuildContext context) {
return TextField(
controller: _textController,
);
}
}
이 예시에서는 TextEditingController
를 생성하고, 위젯이 메모리에서 제거될 때 dispose()
메서드를 통해 이를 해제합니다. 이렇게 해서 메모리 누수를 방지할 수 있습니다.