Flutter Dev Toolkit
π A modular in-app developer console for Flutter apps.
Track logs, API calls, navigation, lifecycle events, screen transitions, app state, and more β all in real time, inside your app.
β¨ Features
- β In-app Dev Console with floating overlay
- β Colored logs with filtering and tagging
- β
Network call inspector (supports
http
,dio
, andretrofit
) - β Route stack and screen duration tracker
- β Lifecycle event logging
- β Export logs, network calls, and route data
- β Plugin system for adding custom tools
- β App State Inspector (Bloc support)
π Installation
Add to your pubspec.yaml
:
dependencies:
flutter_dev_toolkit: ^latest_version
Then:
flutter pub get
π Getting Started
1. Initialize the toolkit
void main() {
FlutterDevToolkit.init(
config: DevToolkitConfig(
logger: DefaultLogger(),
disableBuiltInPlugins: [
// BuiltInPluginType.logs,
// BuiltInPluginType.network,
// BuiltInPluginType.routes,
// BuiltInPluginType.deviceInfo,
],
),
);
runApp(MyApp());
}
2. Add Dev Console Overlay
MaterialApp(
builder: (context, child) {
return Stack(
children: [
child!,
const DevOverlay(),
],
);
},
navigatorObservers: [RouteInterceptor.instance],
);
π Network Setup
πΉ Using http
package
Replace the default client with HttpInterceptor from the toolkit:
import 'package:http/http.dart' as http;
import 'package:flutter_dev_toolkit/flutter_dev_toolkit.dart';
final client = HttpInterceptor(); // Instead of http.Client()
final response = await client.get(Uri.parse('https://example.com'));
πΉ Using dio
Register Dio interceptor:
final dio = Dio();
dio.interceptors.add(DioNetworkInterceptor());
πΉ Using retrofit
Pass the configured Dio instance to your Retrofit client:
final api = MyApiClient(Dio()..interceptors.add(DioNetworkInterceptor()));
π§© Plugins
You can add custom developer tools as plugins:
class CounterPlugin extends DevToolkitPlugin {
@override
String get name => 'Counter';
@override
IconData get icon => Icons.exposure_plus_1;
@override
void onInit() => debugPrint('CounterPlugin loaded!');
@override
Widget buildTab(BuildContext context) => Center(child: Text('Counter Tab'));
}
FlutterDevToolkit.registerPlugin(CounterPlugin());
π App State Inspector
Inspect state transitions (Bloc only for now).
Bloc.observer = DevBlocObserver();
FlutterDevToolkit.registerPlugin(
AppStateInspectorPlugin([
BlocAdapter(),
]),
);
π Logging
FlutterDevToolkit.logger.log('Message');
FlutterDevToolkit.logger.log('Error occurred', level: LogLevel.error);
π€ Exporting
You can export relevant data directly from each pluginβs tab:
- Logs Plugin β Export filtered logs
- Network Plugin β Export captured network calls
- Route Tracker β Export route stack and navigation history
πΌοΈ Screenshots
Log Console

Bloc Inspector β Overview

Device Info

Network Interceptor

Route Tracker

π License
MIT
Libraries
- built_in_plugins/actions_plugin
- built_in_plugins/device_info_plugin
- built_in_plugins/logs_plugin
- built_in_plugins/network_plugin
- built_in_plugins/routes_plugin
- built_in_plugins/widgets/actions_tab
- built_in_plugins/widgets/device_info_tab
- built_in_plugins/widgets/log_tile_widget
- built_in_plugins/widgets/logs_tab
- built_in_plugins/widgets/network_tab
- built_in_plugins/widgets/routes_tab
- core/default_logger
- core/dev_console_theme
- core/dev_toolkit_config
- core/dev_toolkit_plugin
- core/device_info_store
- core/logger_interface
- core/network_log_store
- core/plugin_registry
- flutter_dev_toolkit
- interceptors/interceptor_registry
- interceptors/lifecycle_interceptor
- interceptors/network/dio_interceptor
- interceptors/network/http_interceptor
- interceptors/network/network_log
- interceptors/network_interceptor
- interceptors/performance/cold_start_timer
- interceptors/performance/frame_drop_detector
- interceptors/route_interceptor
- models/built_in_plugin_type
- models/log_entry
- models/log_tag
- models/route_entry
- plugins/adapters/bloc_adapter
- plugins/state_inspector/app_state_adapter
- plugins/state_inspector/app_state_entry
- plugins/state_inspector/app_state_inspector_plugin
- plugins/state_inspector/bloc_state_tracker
- ui/dev_toolkit_tab_sync
- ui/log_console
- ui/log_overlay
- ui/network_log_detail_page