flutter_debug_tools 2.0.1 copy "flutter_debug_tools: ^2.0.1" to clipboard
flutter_debug_tools: ^2.0.1 copied to clipboard

FlutterLens is a set of tools to help find and debug UI or performance issues from the Flutter app itself.

FlutterLens πŸ”

FlutterLens Branding

In-app debug tools for Flutter UI, rendering, logs, navigation, and device diagnostics - no context switching required.

Platform Pub Package License: MIT

Features β€’ Installation β€’ Quick Start β€’ Debug Logs β€’ Tips β€’ License


Screenshots
Flow 1 Flow 3 Flow 5
🧲 Edge tray launcher docked to the right side; draggable and always accessible. πŸ“‹ Bottom sheet tools grid with active/inactive visual states and quick toggles. 🎨 Color result card showing selected color in HEX, RGB, and HSL with copy action.
Flow 2 Flow 4 Flow 6
🧾 Version ticker displaying app, FlutterLens, Flutter, Dart, and build mode details. πŸ“± In-app debug logs to inspect console logs inside the running app. ⚑ Device details to quickly check and share device details.

✨ Features #

  • 🧭 Screen Name Overlay: See the active route/screen while navigating.
  • πŸ“‹ Debug Logs Viewer: Capture and inspect console logs inside the running app.
  • πŸ“± Device Details: Inspect model, OS, screen metrics, and hardware info in-app.
  • 🎯 Color Picker: Pick any on-screen pixel color quickly.
  • 🧱 Debug Paint / Layout Insights: Visualize layout boundaries and spacing behavior.
  • 🌈 Repaint Rainbow: Spot frequent repaints to detect expensive widgets.
  • ⚑ Performance Overlay Toggle: Enable Flutter performance overlay directly from the panel.
  • 🧲 Edge Tray Launcher: Open FlutterLens from a draggable edge tray.
  • 🧾 Version Ticker: Live ticker for app/build/flutter/dart/FlutterLens versions.
  • 🎨 Picked Color Card: View HEX/RGB/HSL + copy from the panel.
  • πŸ’Ύ Sticky Debug Toggles: Core flags are persisted across launches.

🧰 Tool-by-tool quick map #

  • Debug Paint β†’ toggles debugPaintSizeEnabled
  • Size Info β†’ enables render box inspector overlay
  • Repaint Rainbow β†’ toggles debugRepaintTextRainbowEnabled
  • Debug Logs β†’ opens in-app logs viewer
  • Perf Overlay β†’ toggles showPerformanceOverlay
  • Color Picker β†’ pixel pick + color card/copy flow
  • Device Details β†’ opens device info sheet
  • Screen Name β†’ route name overlay (with DebugNavigatorObserver)

πŸ“¦ Installation #

Add this to your pubspec.yaml:

dependencies:
  flutter_debug_tools: ^2.0.0

Then run:

flutter pub get

πŸš€ Quick Start #

import 'package:flutter/material.dart';
import 'package:flutter_debug_tools/flutter_debug_tools.dart';

Future<void> main() async {
  await DebugLogCapture.runApp(() async {
    runApp(const MyApp());
  });
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final navigatorObserver = DebugNavigatorObserver();

    return FlutterLens(
      builder: (context, showPerformanceOverlay, child) {
        return MaterialApp(
          title: 'FlutterLens Demo',
          showPerformanceOverlay: showPerformanceOverlay,
          navigatorObservers: [navigatorObserver],
          home: const Placeholder(),
        );
      },
    );
  }
}

🧩 Minimal integration (without log zone wrapper) #

import 'package:flutter/material.dart';
import 'package:flutter_debug_tools/flutter_debug_tools.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return FlutterLens(
      builder: (context, showPerformanceOverlay, child) {
        return MaterialApp(
          showPerformanceOverlay: showPerformanceOverlay,
          home: const Placeholder(),
        );
      },
    );
  }
}

πŸŽ›οΈ Disable in non-debug environments #

FlutterLens(
  isEnabled: kDebugMode,
  builder: (context, showPerformanceOverlay, child) {
    return MaterialApp(
      showPerformanceOverlay: showPerformanceOverlay,
      home: const HomeScreen(),
    );
  },
)

🧾 Debug Logs (How It Works) #

  • βœ… Captures Dart-side console logs (including print output in the wrapped zone)
  • βœ… Captures framework/platform error callbacks and shows them in the logs viewer
  • βœ… Lets you filter logs by level (All, Info, Warn, Error, Debug)
  • βœ… Tap any log row to copy it to clipboard

If you already use another logger, you can still use it; FlutterLens will continue showing captured console/error output in the viewer.

πŸ”Ž What gets captured #

  • print(...) output (inside DebugLogCapture.runApp zone)
  • FlutterError.onError
  • PlatformDispatcher.instance.onError
  • uncaught zoned async exceptions

πŸ“š Public logging APIs #

  • DebugLogCapture.install()
  • DebugLogCapture.runApp(() async { ... })
  • DebugLogStore.instance.add(...)
  • DebugLogStore.instance.clear()

🧭 Navigation integration #

To populate route names in the Screen Name overlay, attach DebugNavigatorObserver:

MaterialApp(
  navigatorObservers: [DebugNavigatorObserver()],
  home: const HomeScreen(),
)

πŸ–±οΈ Panel interactions #

  • Swipe down on the panel to dismiss.
  • Tap outside the panel to dismiss.
  • Drag the right-edge tray up/down to reposition.
  • Tap the tray to open FlutterLens.

πŸ’‘ Tips #

  • Use FlutterLens only in debug/dev environments.
  • Add DebugNavigatorObserver for better route visibility in overlays.
  • Keep an eye on Repaint Rainbow + Performance Overlay together for quick perf diagnosis.
  • If Dart/Flutter versions show fallback values, pass build-time dart-defines for those keys.

πŸ™Œ Credits #

Built with:


🐞 Bugs or Requests #


πŸ“„ License #

MIT License

8
likes
0
points
66
downloads

Publisher

verified publisherhashstudios.dev

Weekly Downloads

FlutterLens is a set of tools to help find and debug UI or performance issues from the Flutter app itself.

Repository (GitHub)
View/report issues

Topics

#debug #color-picker #performance #ui #size

License

unknown (license)

Dependencies

device_info_plus, flutter, package_info_plus, shared_preferences

More

Packages that depend on flutter_debug_tools