Sobes.tech
Junior — Middle

In welke gevallen is het nodig om een aanroep van de destroy-methode of vergelijkbaar te implementeren om bronnen in een object vrij te maken?

sobes.tech AI

Antwoord van AI

In Flutter moet de methode dispose() (vergelijkbaar met destroy) worden geïmplementeerd om resources vrij te maken die niet automatisch door de garbage collector worden beheerd. Dit is relevant in de volgende gevallen:

  • Controllers (bijvoorbeeld TextEditingController, AnimationController) — moeten worden vrijgemaakt om geheugenlekken te voorkomen.

  • Streams-abonnementen (StreamSubscription) — abonnementen moeten worden geannuleerd om geen gebeurtenissen meer te ontvangen na het verwijderen van de widget.

  • Timers en andere asynchrone operaties — moeten worden gestopt of geannuleerd.

  • Resources gerelateerd aan platformkanalen of native objecten — moeten worden vrijgemaakt om lekken te voorkomen.

Voorbeeld:

class MyWidgetState extends State<MyWidget> {
  final TextEditingController _controller = TextEditingController();
  late final AnimationController _animationController;

  @override
  void initState() {
    super.initState();
    _animationController = AnimationController(vsync: this);
  }

  @override
  void dispose() {
    _controller.dispose();
    _animationController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

Dus, dispose() is nodig voor het correct vrijmaken van resources en het voorkomen van geheugenlekken.