network_inspector

Creator: coderz1093

Last updated:

Add to Cart

Description:

network inspector

Easy to use, http client class debugger & logger for multiple http client.
This package contains a set of high-level functions and classes that make it easy to log / debug HTTP activities on the fly. It's also depend on Dio and Http package.
















https://user-images.githubusercontent.com/27884014/156951569-539bf1b4-246a-446f-a01e-7abdfae2d28b.mp4
Material 3 & Dark mode support 🆕 #
Now you can use your favorite material 3 theme and dark mode, starting from version 1.0.4
















Get Started #
add dependency
dependencies:
network_inspector: ^1.0.0
copied to clipboard
Initialize #
Initialize network inspector, call initialize method to init the local database sqlite. You can use WidgetsFlutterBinding.ensureInitialized(); to makesure widget flutter binding initialized before initialize network inspector.
void main() {
WidgetsFlutterBinding.ensureInitialized();
NetworkInspector.initialize();
runApp(const ExampleApp());
}
copied to clipboard
Dio Users #

Add interceptor class DioInterceptor for dio client.
Create another Network Inspector class to used on the DioInterceptor constructor.
Use onHttpFinish as a callback when http activities is finish (Can be success/error)

/// Client Declaration
Dio get dioClient{
final networkInspector = NewtworkInspector();
final client = Dio()..interceptors.add(
DioInterceptor(
logIsAllowed: true, //Enable/Disable overall logging
isConsoleLogAllowed: true, //Enable/Disable only console logging
networkInspector: networkInspector,
onHttpFinish: (hashCode, title, message) {
notifyActivity(
title: title,
message: message,
);
},
),
);
return client;
}

/// Use dio regularly
/// Every request, response & error will automatically fetched & stored by the network inspector.
/// And also if the properties of declared `DioInterceptor` is not empty, it will set every properties as default.
await dioClient.post('/test', data: {'id': 1, 'name': 'jhon folks'});
copied to clipboard
Http Users #

Add interceptor class HttpInterceptor for dio client.
Initialize Client to client class, then use client on the HttpInterceptor constructor
Create another Network Inspector class to used on the DioInterceptor constructor.
Use onHttpFinish as a callback when http activities is finish (Can be success/error)

HttpInterceptor get httpClient {
final networkInspector = NewtworkInspector();
final client = Client();
final interceptor = HttpInterceptor(
logIsAllowed: true, //Enable/Disable overall logging
isConsoleLogAllowed: true, //Enable/Disable only console logging
client: client,
baseUrl: Uri.parse('http://192.168.1.3:8000/'),
networkInspector: networkInspector,
onHttpFinish: (hashCode, title, message) {
notifyActivity(
title: title,
message: message,
);
},
headers: {
'Content-type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer WEKLSSS'
},
);
return interceptor;
}
/// Use http client regularly
/// Every request, response & error will automatically fetched & stored by the network inspector.
/// And also if the properties of declared `HttpInterceptor` is not empty, it will set every properties as default.
await httpClient.post(url, body: {'name': 'doodle', 'color': 'blue'});
copied to clipboard
Acessing the UI #
We can use regular Navigator.push, we decide to use MaterialPageRoute instead of named route to avoid tightly coupled.
/// Use this on floating button / notification handler.
void goToActivityPage(BuildContext context){
await Navigator.push(
context,
MaterialPageRoute<void>(
builder: (context) => ActivityPage(),
),
);
}
copied to clipboard
Entry point from notification tap action #
If the entry point to http activity page is desired from notification tap action, create a class to store GlobalKey<NavigatorState> which we need to navigate to the http activity page, from anywhere add GlobalKey into the MaterialApp widget on the navigatorKey constructor.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Network inspector',
theme: ThemeData(
primarySwatch: Colors.blue,
),
/// Put your navigation key into a class
/// In this case we put navigator key on
/// ```dart
/// class NavigationService{
/// static var navigatorKey = GlobalKey<NavigatorState>();
/// }
/// ```
navigatorKey: NavigationService.navigatorKey,
initialRoute: MainPage.routeName,
routes: NavigationService.routes,
),
}
copied to clipboard
Then you can use the global key to get the context for Navigator.push
/// Get the current context
var context = NavigationService.navigatorKey.currentContext;
/// Call the `goToActivityPage` method and Supply the context
goToActivityPage(context);
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.