dispose()

프랭크 IT·2023년 10월 15일
0

flutter

목록 보기
21/28

Flutter에서 dispose() 메서드는 위젯 트리에서 제거되기 전에 위젯의 리소스를 해제할 수 있는 기회를 제공합니다. 특히 StatefulWidget에서 사용되며, 위젯이 메모리에서 제거될 때 호출됩니다.

dispose()는 다음과 같은 경우에 유용합니다:

  1. Stream 구독 취소: 위젯이 Stream을 구독하고 있다면, dispose()에서 구독을 취소해야 메모리 누수를 방지할 수 있습니다.
  2. Controller 해제: 여러 Flutter 패키지들은 자체적인 컨트롤러 객체를 사용합니다 (예: AnimationController, TextEditingController 등). 이러한 컨트롤러는 dispose()에서 해제되어야 합니다.
  3. 자원 해제: 파일 핸들, 네트워크 연결 등의 자원을 사용한 경우, 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() 메서드를 통해 이를 해제합니다. 이렇게 해서 메모리 누수를 방지할 수 있습니다.

profile
AWS, Vue, Java, flutter, Mongodb, Python, Git , EKS, Docker, 독서, 영어, 에어로빅, 자전거, 농구, 바둑, 풋살, 복싱, Guitar, 글쓰기, 랭체인

0개의 댓글