A lightweight, Dart 3-compatible Flutter logging package with a draggable in-app log viewer overlay — inspired by let_log, rebuilt for modern apps.
Built with 💙 by Saumya Macwan.
- 🧠 Non-blocking: Log I/O runs in a background isolate
- 🌈 Material 3 overlay, dark/light theme aware
- 📄 Pretty-printed JSON views for network logs
- 🌐 Dio interceptor for network logging with status coloring
- 💬 Integrates with BLoC, Riverpod, GetX, and
logger - 🔍 Filter, sort, search logs
- 📤 Export logs as
.json, or copy to clipboard - 🧾 Detailed log view on card tap
- 🚀 Shake-to-open overlay (debug-only)
- 🐞 Draggable floating debug button
- 🔌 Optional:
GoRouterObserver,AppLifecycleObserver - 🖥️ Emoji + color-coded console logging (with toggle)
- 🧰 Simple static API:
SimpleLoggerOverlay.log(...)
import 'package:simple_logger_overlay/simple_logger_overlay.dart';
@override
Widget build(BuildContext context) {
return FloatingActionButton( onPressed: () { SimpleLoggerOverlay.show(context); }, child: const Icon(Icons.file_present), );} Log directly with the static API:
SimpleLoggerOverlay.log("Something happened", level: LogLevel.info, tag: 'HomeScreen'); import 'package:simple_logger_overlay/core/bloc_logger_observer.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); Bloc.observer = SimpleOverlayBlocObserverLogger();} import 'package:simple_logger_overlay/core/riverpod_logger.dart';
void main() {
runApp( ProviderScope( observers: [SimpleOverlayLoggerRiverpodObserver()], child: const MyApp(), ), );} import 'package:simple_logger_overlay/core/getx_logger_patch.dart';
void main() {
simpleOverlayGetXLogObserver();} import 'package:dio/dio.dart';
import 'package:simple_logger_overlay/core/network_logger_interceptor.dart';
final dio = Dio()
..interceptors.add(SimpleOverlayNetworkLoggerInterceptor()); MaterialApp.router(
routerDelegate: GoRouter( observers: [SimpleOverlayGoRouterObserver()], ... ).routerDelegate,); WidgetsBinding.instance.addObserver(SimpleOverlayAppLifecycleObserver()); Stack(
children: [ child!, const SimpleOverlayDraggableDebuggerFAB(navigatorKey: rootNavigatorKey), ],); Logs are also printed in your terminal with emojis and color by default.
[2025-06-24T19:15:01.000Z] 🔍 [DEBUG] [LoginBloc] Event dispatched[2025-06-24T19:15:02.000Z] 🔥 [ERROR] [LoginBloc] Invalid password Disable if needed:
SimpleOverlayLogStorageService.enableConsole = false; Use the export button in the top-right corner of the overlay to:
- 📤 Export logs as
.json - 📋 Copy current log to clipboard







