impaktfull_network_interceptor 0.0.1
impaktfull_network_interceptor: ^0.0.1 copied to clipboard
A lightweight Flutter package to intercept and inspect Dio network calls in-memory, with a built-in review UI.
impaktfull_network_interceptor #
A lightweight Flutter package to intercept and inspect Dio network calls in-memory, with a built-in review UI.
Features #
- Intercepts all Dio requests, responses, and errors
- Stores calls in memory — no disk I/O, no setup
- Built-in list and detail screens to browse captured calls
- Live call count via
ValueNotifierfor badge display - Listener interface to react to new calls in code
- No singletons — everything is passed explicitly
Setup #
Create a controller and wire it to your Dio instance:
import 'package:impaktfull_network_interceptor/impaktfull_network_interceptor.dart';
final controller = ImpaktfullNetworkInterceptorController();
final dio = Dio()..interceptors.add(ImpaktfullNetworkDioInterceptor(controller: controller));
Keep the controller alive for the lifetime of your app (top-level variable, provider, or similar).
Showing the network call list #
Call controller.show(context) from anywhere you have a BuildContext:
TextButton(
onPressed: () => controller.show(context),
child: const Text('View network calls'),
)
Displaying a call count badge #
callCountNotifier is a ValueNotifier<int> that updates whenever a new call is captured:
ValueListenableBuilder<int>(
valueListenable: controller.callCountNotifier,
builder: (context, count, _) {
return IconButton(
icon: Badge(
label: Text('$count'),
isLabelVisible: count > 0,
child: const Icon(Icons.list_alt),
),
onPressed: () => controller.show(context),
);
},
)
Listening to new calls in code #
Implement ImpaktfullNetworkInterceptorListener and register it with the controller:
class MyNetworkListener implements ImpaktfullNetworkInterceptorListener {
@override
void onNetworkCallAdded(NetworkCall call) {
debugPrint('[Network] ${call.method} ${call.uri}');
}
}
Register and unregister it alongside your widget lifecycle:
final _listener = MyNetworkListener();
@override
void initState() {
super.initState();
controller.addListener(_listener);
}
@override
void dispose() {
controller.removeListener(_listener);
controller.dispose();
super.dispose();
}
Dispose #
Always call controller.dispose() when you no longer need it.
Public API #
| Class | Description |
|---|---|
ImpaktfullNetworkInterceptorController |
Owns the repository, exposes call count, shows the UI |
ImpaktfullNetworkDioInterceptor |
Dio interceptor — pass your controller in the constructor |
ImpaktfullNetworkInterceptorListener |
Abstract listener for reacting to new calls |
NetworkCallsRepository |
Read-only access to captured calls via callsNotifier |
NetworkCall |
Immutable model for a single captured call |
NetworkCallStatus |
loading / success / error |
ImpaktfullNetworkInterceptorListScreen |
List screen — accepts a repository |
NetworkCallDetailScreen |
Detail screen — accepts a call and repository |