devconnect_manage_kit 1.0.2 copy "devconnect_manage_kit: ^1.0.2" to clipboard
devconnect_manage_kit: ^1.0.2 copied to clipboard

DevConnect client SDK for Flutter - auto-intercepts HTTP, logs, state, storage. Works with Dio, http, Firebase, OAuth2, logger, talker, fimber, and more.

DevConnect Manage Kit — Flutter SDK #

License: MIT Flutter

Debug your Flutter app with DevConnect Manage Tool — network, state, logs, storage, database, performance — all in one desktop tool.

Install #

# pubspec.yaml
dependencies:
  devconnect_flutter: ^1.0.0

Quick Start #

import 'package:devconnect_manage_kit/devconnect_manage_kit.dart';

void main() async {
  await DevConnect.initAndRunApp(
    appName: 'MyApp',
    runApp: () => runApp(const MyApp()),
  );
  // Done. Network + logs auto-captured.
}

Config #

await DevConnect.initAndRunApp(
  appName: 'MyApp',
  runApp: () => runApp(const MyApp()),
  appVersion: '1.0.0',
  host: null,                  // null = auto-detect, '192.168.1.5' = manual
  port: 9090,                  // default: 9090
  enabled: true,               // false = disable (production)
  autoInterceptHttp: true,     // true = auto-capture all HTTP requests
  autoInterceptLogs: true,     // true = auto-capture print/debugPrint
);

Disable auto-intercepts if you want manual control:

await DevConnect.initAndRunApp(
  appName: 'MyApp',
  runApp: () => runApp(const MyApp()),
  autoInterceptHttp: false,    // disable auto — use Dio interceptor or manual report
  autoInterceptLogs: false,    // disable auto — use DevConnect.log/warn/error manually
);

Features #

Network #

Auto-captured via HttpOverrides: http, Dio, Chopper, Retrofit, GraphQL, Firebase, OAuth2, gRPC-web, Image.network.

// Dio (optional, for extra detail)
dio.interceptors.add(DevConnect.dioInterceptor());

Logs #

Auto-captured via Zone: print, debugPrint, logger, talker, logging, fimber, simple_logger.

DevConnect.log('User logged in');
DevConnect.debug('Token refreshed', tag: 'Auth');
DevConnect.warn('Rate limit approaching');
DevConnect.error('Payment failed', stackTrace: StackTrace.current.toString());

State #

Supports: Riverpod, BLoC, Provider/ChangeNotifier, GetX, MobX, Signals.

// Riverpod
class DevConnectObserver extends ProviderObserver {
  @override
  void didUpdateProvider(ProviderBase p, Object? prev, Object? next, ProviderContainer c) {
    DevConnect.reportStateChange(
      stateManager: 'riverpod',
      action: '${p.name ?? p.runtimeType} updated',
      previousState: {'value': prev.toString()},
      nextState: {'value': next.toString()},
    );
  }
}

Storage #

Supports: SharedPreferences, Hive, Realm, SecureStorage, MMKV, ObjectBox, Sembast, sqflite, Floor.

Each library has 2 options: auto (wrap once, everything reported) or manual (you control what gets reported). Choose per library.

SharedPreferences

// Option 1: Auto — wrap once, all get/set/remove auto-reported
final prefs = DevConnectSharedPreferences.wrap(await SharedPreferences.getInstance());
prefs.setString('token', 'abc');  // auto-reported
prefs.getString('token');          // auto-reported
prefs.remove('token');             // auto-reported

// Option 2: Manual — report only what you want
final sp = DevConnect.sharedPreferencesReporter();
await prefs.setString('token', 'abc');
sp.reportWrite('token', 'abc');   // only this gets reported

Hive

// Option 1: Auto
final box = DevConnectHiveBox.wrap(await Hive.openBox('settings'));
box.put('darkMode', true);  // auto-reported
box.get('darkMode');         // auto-reported

// Option 2: Manual
final hive = DevConnect.hiveReporter();
await box.put('darkMode', true);
hive.reportWrite('darkMode', true);

SecureStorage

// Option 1: Auto (values masked by default)
final secure = DevConnectSecureStorage.wrap(FlutterSecureStorage());
await secure.write(key: 'token', value: 'secret');  // auto-reported as ***

// Option 2: Manual — control what value is shown
final reporter = DevConnect.secureStorageReporter();
await storage.write(key: 'token', value: 'secret');
reporter.reportWrite('token', value: '<hidden>');

MMKV

// Option 1: Auto
final mmkv = DevConnectMMKVWrapper.wrap(MMKV.defaultMMKV());
mmkv.encodeString('token', 'abc');  // auto-reported

// Option 2: Manual
final reporter = DevConnect.mmkvReporter();
mmkv.encodeString('token', 'abc');
reporter.reportWrite('token', value: 'abc');

Sembast

// Option 1: Auto
final store = DevConnectSembastStore.wrap(intMapStoreFactory.store('settings'), db);
await store.record(1).put({'theme': 'dark'});  // auto-reported

// Option 2: Manual
final reporter = DevConnect.sembastReporter();
await storeRef.record(1).put(db, {'theme': 'dark'});
reporter.reportWrite('settings:1', {'theme': 'dark'});

Realm, ObjectBox, Floor, sqflite (manual only)

// Realm
final realm = DevConnect.realmReporter();
realm.reportWrite('User', {'name': 'John', 'age': 25});
realm.reportRead('User', queryResults);
realm.reportDelete('User');

// ObjectBox
final obx = DevConnect.objectBoxReporter();
obx.reportWrite('User', {'name': 'John'});
obx.reportRead('User', queryResults);

// Floor (ORM on SQLite)
final floor = DevConnect.floorReporter();
floor.reportWrite('users', {'id': 1, 'name': 'John'});
floor.reportRead('SELECT * FROM users', results);

// sqflite
final sqf = DevConnect.sqfliteReporter();
sqf.reportWrite('INSERT INTO users', {'name': 'John'});
sqf.reportRead('SELECT * FROM users', results);

Generic (any key-value store)

final custom = DevConnectStorage(storageType: 'my_custom_store');
custom.reportWrite('key', 'value');
custom.reportRead('key', 'value');
custom.reportDelete('key');

Database #

Supports: Drift, Isar, sqflite.

// Drift
final driftReporter = DevConnect.driftReporter();
driftReporter.reportQuery('SELECT * FROM users', results);

// Isar
final isarReporter = DevConnect.isarReporter();
isarReporter.reportQuery('User', results);

Performance #

DevConnect.reportPerformanceMetric(metricType: 'fps', value: 58.5, label: 'Main Thread FPS');

Benchmark #

DevConnect.benchmarkStart('loadHome');
await fetchUser();
DevConnect.benchmarkStep('loadHome');
await fetchPosts();
DevConnect.benchmarkStop('loadHome');

Custom Commands #

DevConnect.registerCommand('clearCache', (args) {
  return {'cleared': true};
});

Production Safety #

Disabled by default in release builds via kDebugMode — zero runtime overhead.

// Explicitly disable
DevConnect.init(appName: 'MyApp', enabled: false);

License #

MIT - by ridelinktechs

1
likes
0
points
190
downloads

Publisher

unverified uploader

Weekly Downloads

DevConnect client SDK for Flutter - auto-intercepts HTTP, logs, state, storage. Works with Dio, http, Firebase, OAuth2, logger, talker, fimber, and more.

Repository (GitHub)
View/report issues

Topics

#debug #network #logging #devtools #storage

License

unknown (license)

Dependencies

device_info_plus, flutter, uuid

More

Packages that depend on devconnect_manage_kit