flutter_debug_tools 2.0.2 copy "flutter_debug_tools: ^2.0.2" to clipboard
flutter_debug_tools: ^2.0.2 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

7
likes
0
points
92
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