{
  "id": "D002",
  "name": "Always Dispose Resources and Remove Listeners",
  "description": "Ensure all resources (Controllers, StreamSubscriptions, FocusNodes, Listeners) are properly disposed in the dispose() method to prevent memory leaks",
  "category": "dart",
  "severity": "error",
  "languages": ["dart"],
  "tags": ["flutter", "memory-leak", "resource-management", "dispose"],
  "config": {
    "disposableTypes": [
      "Controller",
      "StreamSubscription",
      "FocusNode",
      "AnimationController",
      "TextEditingController",
      "ScrollController",
      "TabController",
      "PageController",
      "VideoPlayerController",
      "CameraController"
    ],
    "checkListeners": true,
    "checkSubscriptions": true
  }
}
