{"id":17018424,"url":"https://github.com/liquidatorcoder/flutter_debug_tools","last_synced_at":"2026-03-12T11:10:58.374Z","repository":{"id":266806290,"uuid":"767990802","full_name":"LiquidatorCoder/flutter_debug_tools","owner":"LiquidatorCoder","description":"A set of interactive, in-app tools for diagnosing UI and performance issues in Flutter apps—no external tooling required.","archived":false,"fork":false,"pushed_at":"2024-12-06T13:06:49.000Z","size":5255,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T12:26:48.758Z","etag":null,"topics":["android","debugging","flutter","flutter-package","ios"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/flutter_debug_tools","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiquidatorCoder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-06T09:15:13.000Z","updated_at":"2025-01-06T12:36:27.000Z","dependencies_parsed_at":"2024-12-06T08:57:03.667Z","dependency_job_id":null,"html_url":"https://github.com/LiquidatorCoder/flutter_debug_tools","commit_stats":null,"previous_names":["liquidatorcoder/flutter_debug_tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LiquidatorCoder/flutter_debug_tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiquidatorCoder%2Fflutter_debug_tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiquidatorCoder%2Fflutter_debug_tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiquidatorCoder%2Fflutter_debug_tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiquidatorCoder%2Fflutter_debug_tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiquidatorCoder","download_url":"https://codeload.github.com/LiquidatorCoder/flutter_debug_tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiquidatorCoder%2Fflutter_debug_tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29332292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","debugging","flutter","flutter-package","ios"],"created_at":"2024-10-14T06:45:49.768Z","updated_at":"2026-03-12T11:10:58.337Z","avatar_url":"https://github.com/LiquidatorCoder.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"![FlutterLens](https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/image.png)\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eIn-app debug tools for Flutter UI, rendering, logs, navigation, and device diagnostics - no context switching required.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://flutter.dev\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Platform-Flutter-02569B?logo=flutter\" alt=\"Platform\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pub.dev/packages/flutter_debug_tools\"\u003e\n    \u003cimg src=\"https://img.shields.io/pub/v/flutter_debug_tools.svg\" alt=\"Pub Package\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-red\" alt=\"License: MIT\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#-quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#-debug-logs-how-it-works\"\u003eDebug Logs\u003c/a\u003e •\n  \u003ca href=\"#-tips\"\u003eTips\u003c/a\u003e •\n  \u003ca href=\"#-license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n| Screenshots                                                                                                  |                                                                                                              |                                                                                                              |\n| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |\n| \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/1.png\" alt=\"Flow 1\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/2.png\" alt=\"Flow 2\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/3.png\" alt=\"Flow 3\" width=\"250\" height=\"540\" /\u003e |\n| 🧲 **Edge tray launcher** docked to the right side; draggable and always accessible.                         | 🧾 **Version ticker** displaying app, FlutterLens, Flutter, Dart, and build mode details.                    | 📋 **Bottom sheet tools grid** with active/inactive visual states and quick toggles.                         |\n| \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/4.png\" alt=\"Flow 4\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/5.png\" alt=\"Flow 5\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/6.png\" alt=\"Flow 6\" width=\"250\" height=\"540\" /\u003e |\n| 📱 **In-app debug logs** to inspect console logs inside the running app.                                     | 🎨 **Color result card** showing selected color in HEX, RGB, and HSL with copy action.                       | ⚡ **Device details** to quickly check and share device details.                                             |\n| \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/7.png\" alt=\"Flow 7\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/8.png\" alt=\"Flow 8\" width=\"250\" height=\"540\" /\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/9.png\" alt=\"Flow 9\" width=\"250\" height=\"540\" /\u003e |\n| 🎛️ **Animation toolbox** with global speed, pause/disable toggles, frame timing HUD, and animated-region highlighting controls. | 📈 **Frame timing HUD in context** showing live FPS, average frame time, and max frame time over the app surface. | 🌐 **Network inspector list view** with status filters, HTTP methods, durations, and retry markers for requests. |\n| \u003cimg src=\"https://raw.githubusercontent.com/LiquidatorCoder/flutter_debug_tools/main/screenshots/flow/10.png\" alt=\"Flow 10\" width=\"250\" height=\"540\" /\u003e | \u0026nbsp; | \u0026nbsp; |\n| 🔎 **Network request details sheet** with URL, method, status, duration, and request/response headers for deep inspection. | \u0026nbsp; | \u0026nbsp; |\n\n---\n\n## ✨ Features\n\n- 🧭 **Screen Name Overlay**: See the active route/screen while navigating.\n- 📋 **Debug Logs Viewer**: Capture and inspect console logs inside the running app.\n- 🌐 **Network Inspector**: Capture request/response timing, headers, payloads, failures, and retry attempts.\n- 📱 **Device Details**: Inspect model, OS, screen metrics, and hardware info in-app.\n- 🎯 **Color Picker**: Pick any on-screen pixel color quickly.\n- 🧱 **Debug Paint / Layout Insights**: Visualize layout boundaries and spacing behavior.\n- 🌈 **Repaint Rainbow**: Spot frequent repaints to detect expensive widgets.\n- 🎛️ **Animation Toolbox**: Control animation speed, pause, disable animations, frame timing HUD, and animated-region highlights.\n  - Includes global curve presets (for example: `System`, `Linear`, `Ease In Out`, `Bounce Out`, and more) for animations that opt into FlutterLens curve scope.\n- ⚡ **Performance Overlay Toggle**: Enable Flutter performance overlay directly from the panel.\n- 🧲 **Edge Tray Launcher**: Open FlutterLens from a draggable edge tray.\n- 🧾 **Version Ticker**: Live ticker for app/build/flutter/dart/FlutterLens versions.\n- 🎨 **Picked Color Card**: View HEX/RGB/HSL + copy from the panel.\n- 💾 **Sticky Debug Toggles**: Core flags are persisted across launches.\n\n### 🧰 Tool-by-tool quick map\n\n- `Debug Paint` → toggles `debugPaintSizeEnabled`\n- `Size Info` → enables render box inspector overlay\n- `Repaint Rainbow` → toggles `debugRepaintTextRainbowEnabled`\n- `Debug Logs` → opens in-app logs viewer\n- `Network Inspector` → opens in-app request/response inspector\n- `Perf Overlay` → toggles `showPerformanceOverlay`\n- `Color Picker` → pixel pick + color card/copy flow\n- `Device Details` → opens device info sheet\n- `Screen Name` → route name overlay (with `DebugNavigatorObserver`)\n- `Animation Toolbox` → animation speed/pause/disable/highlight controls\n\n---\n\n## 📦 Installation\n\nAdd this to your `pubspec.yaml`:\n\n```yaml\ndependencies:\n  flutter_debug_tools: ^2.0.5\n```\n\nThen run:\n\n```bash\nflutter pub get\n```\n\n---\n\n## 🚀 Quick Start\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:flutter_debug_tools/flutter_debug_tools.dart';\n\nFuture\u003cvoid\u003e main() async {\n  await DebugLogCapture.runApp(() async {\n    runApp(const MyApp());\n  });\n}\n\nclass MyApp extends StatelessWidget {\n  const MyApp({super.key});\n\n  @override\n  Widget build(BuildContext context) {\n    final navigatorObserver = DebugNavigatorObserver();\n\n    return FlutterLens(\n      builder: (context, showPerformanceOverlay, child) {\n        return MaterialApp(\n          title: 'FlutterLens Demo',\n          showPerformanceOverlay: showPerformanceOverlay,\n          navigatorObservers: [navigatorObserver],\n          home: const Placeholder(),\n        );\n      },\n    );\n  }\n}\n```\n\n### 🧩 Minimal integration (without log zone wrapper)\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:flutter_debug_tools/flutter_debug_tools.dart';\n\nvoid main() {\n  runApp(const MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  const MyApp({super.key});\n\n  @override\n  Widget build(BuildContext context) {\n    return FlutterLens(\n      builder: (context, showPerformanceOverlay, child) {\n        return MaterialApp(\n          showPerformanceOverlay: showPerformanceOverlay,\n          home: const Placeholder(),\n        );\n      },\n    );\n  }\n}\n```\n\n### 🎚️ Opt animations into global curve override\n\nAnimation Toolbox curve presets apply to animations that resolve their curve from `FlutterLensAnimationCurveScope`:\n\n```dart\nfinal curve = FlutterLensAnimationCurveScope.resolve(context, Curves.easeInOutCubic);\n\nAnimatedContainer(\n  duration: const Duration(milliseconds: 500),\n  curve: curve,\n  child: const Placeholder(),\n)\n```\n\n### 🎛️ Disable in non-debug environments\n\n```dart\nFlutterLens(\n  isEnabled: kDebugMode,\n  builder: (context, showPerformanceOverlay, child) {\n    return MaterialApp(\n      showPerformanceOverlay: showPerformanceOverlay,\n      home: const HomeScreen(),\n    );\n  },\n)\n```\n\n---\n\n## 🧾 Debug Logs (How It Works)\n\n- ✅ Captures Dart-side console logs (including `print` output in the wrapped zone)\n- ✅ Captures framework/platform error callbacks and shows them in the logs viewer\n- ✅ Lets you filter logs by level (`All`, `Info`, `Warn`, `Error`, `Debug`)\n- ✅ Tap any log row to copy it to clipboard\n\nIf you already use another logger, you can still use it; FlutterLens will continue showing captured console/error output in the viewer.\n\n### 🔎 What gets captured\n\n- `print(...)` output (inside `DebugLogCapture.runApp` zone)\n- `FlutterError.onError`\n- `PlatformDispatcher.instance.onError`\n- uncaught zoned async exceptions\n\n### 📚 Public logging APIs\n\n- `DebugLogCapture.install()`\n- `DebugLogCapture.runApp(() async { ... })`\n- `DebugLogStore.instance.add(...)`\n- `DebugLogStore.instance.clear()`\n\n---\n\n## 🧭 Navigation integration\n\nTo populate route names in the `Screen Name` overlay, attach `DebugNavigatorObserver`:\n\n```dart\nMaterialApp(\n  navigatorObservers: [DebugNavigatorObserver()],\n  home: const HomeScreen(),\n)\n```\n\n---\n\n## 🖱️ Panel interactions\n\n- Swipe down on the panel to dismiss.\n- Tap outside the panel to dismiss.\n- Drag the right-edge tray up/down to reposition.\n- Tap the tray to open FlutterLens.\n\n### 🌐 Network Inspector coverage\n\n- Captures requests made through `dart:io` `HttpClient` (including typical `package:http` usage on Android/iOS/desktop).\n- Does not capture web `fetch/XHR` traffic.\n\n---\n\n## 💡 Tips\n\n- Use FlutterLens only in debug/dev environments.\n- Add `DebugNavigatorObserver` for better route visibility in overlays.\n- Keep an eye on `Repaint Rainbow` + `Performance Overlay` together for quick perf diagnosis.\n- Use `FlutterLensAnimationCurveScope.resolve(...)` in your app animations when you want Animation Toolbox curve overrides to affect them.\n- Network Inspector currently targets `dart:io` `HttpClient` traffic.\n- If Dart/Flutter versions show fallback values, pass build-time dart-defines for those keys.\n\n---\n\n## 🙌 Credits\n\nBuilt with:\n\n- [shared_preferences](https://pub.dev/packages/shared_preferences)\n- [device_info_plus](https://pub.dev/packages/device_info_plus)\n\n---\n\n## 🐞 Bugs or Requests\n\n- Bug report: [Open issue](https://github.com/LiquidatorCoder/flutter_debug_tools/issues/new?template=bug_report.md)\n- Feature request: [Open request](https://github.com/LiquidatorCoder/flutter_debug_tools/issues/new?template=feature_request.md)\n- PRs are welcome! 🎉\n\n---\n\n## 📄 License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquidatorcoder%2Fflutter_debug_tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliquidatorcoder%2Fflutter_debug_tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquidatorcoder%2Fflutter_debug_tools/lists"}