Skip to content

TapGestureRecognizer leaked by _RenderSlider and _RenderRangeSlider #14204

Open

Description

@najeira

These classes uses TapGestureRecognizer but does not dispose it.

  • RenderToggleable
  • _RenderCupertinoSwitch
  • _RenderSlider

Is it the intended implementation?

A parent class of TapGestureRecognizer, PrimaryPointerGestureRecognizer uses Timer and has dispose method.

LongPressGestureRecognizer is used similarly.

Activity

  1. changed the title [-]TapGestureRecognizer is not disposed in framework[/-] [+]TapGestureRecognizer leaked by RenderToggleable, _RenderCupertinoSwitch, _RenderSlider[/+] on Jan 22, 2018
  2. added
    c: crashStack traces logged to the console
    frameworkflutter/packages/flutter repository. See also f: labels.
    on Jan 22, 2018
  3. added this to the milestone on Jan 22, 2018
  4. Hixie commented on Jan 22, 2018

    @Hixie
    Contributor

    Sounds like a bug.

  5. cbracken commented on Sep 19, 2018

    @cbracken
    Member
  6. tvolkert commented on Jan 13, 2020

    @tvolkert
    Contributor
  7. goderbauer commented on Jan 13, 2020

    @goderbauer
    Member

    Problem is still present, we should fix it by creating the Recognizers on attach and disposing them on detach, similarly to how we fixed this for RenderEditable in #42076.

  8. self-assigned this
    on Jan 13, 2020
  9. removed their assignment
    on Jan 24, 2020
  10. goderbauer commented on Feb 24, 2020

    @goderbauer
    Member

    Instead of what I am suggestion above, we should do what's suggested in #49999 (comment) to address this problem.

  11. added
    P2Important issues not at the top of the work list
    on May 29, 2020
  12. 1 remaining item

  13. removed this from the milestone on Aug 17, 2020
  14. goderbauer commented on Feb 19, 2021

    @goderbauer
    Member

    Not disposing these recognizers is actually causing crashes in the RenderToggleable. I've filed #76411 with details.

  15. exaby73 commented on Apr 17, 2023

    @exaby73
    Member

    #76745 removed RenderToggleable but _RenderCupertinoSwitch and _RenderSlider still do not dispose of their TapGestureRecognizers. Updating the labels and removing RenderToggleable from the title to better reflect the current state of the issue.

    _RenderCupertinoSwitch

    void dispose() {
    _clipRRectLayer.layer = null;
    super.dispose();
    }

    _RenderSlider

    void dispose() {
    _clipRRectLayer.layer = null;
    super.dispose();
    }

  16. changed the title [-]TapGestureRecognizer leaked by RenderToggleable, _RenderCupertinoSwitch, _RenderSlider[/-] [+]TapGestureRecognizer leaked by `_RenderCupertinoSwitch`, `_RenderSlider`[/+] on Apr 17, 2023
  17. changed the title [-]TapGestureRecognizer leaked by `_RenderCupertinoSwitch`, `_RenderSlider`[/-] [+]`TapGestureRecognizer` leaked by `_RenderCupertinoSwitch`, `_RenderSlider`[/+] on Apr 17, 2023
  18. changed the title [-]`TapGestureRecognizer` leaked by `_RenderCupertinoSwitch`, `_RenderSlider`[/-] [+]`TapGestureRecognizer` leaked by `_RenderSlider` and `_RenderRangeSlider`[/+] on Apr 18, 2023
  19. bleroux commented on Apr 18, 2023

    @bleroux
    Contributor

    In #51606 the CupertinoSwitch was refactored to move the gesture recognizer out of the RenderObject into a state object.

    _RenderSlider and _RenderRangeSlider do not dispose their TapGestureRecognizer.

  20. AbdeMohlbi commented on Nov 12, 2026

    @AbdeMohlbi
    Member

    this seems to be fixed now because both _RenderRangeSlider and _RenderSlider do dispose their TapGestureRecognizer:

    _RenderRangeSlider

    @override
    void dispose() {
    _drag.dispose();
    _tap.dispose();

    _RenderSlider

    @override
    void dispose() {
    _drag.dispose();
    _tap.dispose();
    _labelPainter.dispose();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: crashStack traces logged to the consolefound in release: 3.10Found to occur in 3.10frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onteam-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions