infospect

Creator: coderz1093

Last updated:

Add to Cart

Description:

infospect

Overview #
Infospect meaning Information Inspector is a Flutter plugin for that empowers the developers to
debug the network calls and logs in the app. It is a powerful tools that offer network call
interception and logging features, among others. By allowing developers to monitor and intercept
network calls, they can efficiently debug network-related issues and optimize app performance. The
logging and debugging capabilities aid in understanding app behavior and detecting errors, leading
to faster bug resolution.
Preview #
iOS

macOS - Opening Infospect in new Window

Linus (Ubuntu VM in mac)- Opening Infospect in new Window

Window 10 - (VM in mac) - Opening Infospect in new Window

Getting started #

Add the dependency to your pubspec.yaml file. (Replace latest-version with the latest version of
the plugin)

dependencies:
infospect: latest-version
copied to clipboard
or using the below command
flutter pub add infospect
copied to clipboard
Usage #

Adding args to main, to enable the support of multi window. Plugin used for
this https://pub.dev/packages/desktop_multi_window

void main(List<String> args) {}
copied to clipboard

Initialize the plugin in main.dart

WidgetsFlutterBinding.ensureInitialized();
Infospect.ensureInitialized();
copied to clipboard
Infospect ensureInitialized({
int maxCallsCount = 1000,
GlobalKey<NavigatorState>? navigatorKey,
bool logAppLaunch = false,
void Function(String path)? onShareAllNetworkCalls,
void Function(String path)? onShareAllLogs,
}
copied to clipboard
In ensureInitialized we can configure the maxCallCount int for both network calls and logs,
defaults to 1000.
A navigatorKey GlobalKey<NavigatorState> that will be used for navigation and dialog, if not
provided a new key will be created.
A bool value to logAppLaunch, if true will log the app launch with details like below, defaults to
true,
App name: Example
Package: com.example.example
Version: 0.1.0
Build number: 0.1.0
Started at: 2023-08-20T13:39:56.531974
copied to clipboard
A call back to handle the share functionality for all the network calls onShareAllNetworkCalls,
This will provide the path of the compressed file name infospect_network_calls_log.tar.gz, which can
be shared accordingly.
If not provided, the default platform share option will be invoked.
A call back to handle the share functionality for all the logs onShareAllLogs,
This will provide the path of the compressed file name infospect_logs.tar.gz, which can be shared
accordingly.
If not provided, the default platform share option will be invoked.

As in desktop a new window is used to show the infospect window, we need to add the following
code in main.dart, as this will help to handle the data received to the main window from the
infospect window.

Infospect.ensureInitialized();
Infospect.instance.handleMainWindowReceiveData();
copied to clipboard
else can be also combined with ensureInitialized
Infospect.ensureInitialized(logAppLaunch: true).handleMainWindowReceiveData()
copied to clipboard

Rather using runApp using, use Infospect.instance.run(args, myApp: EntryWidget());
This will help to set the args and use it when launching the infospect window in Desktop

Infospect.instance.run(args, myApp: const MainApp());
copied to clipboard

Adding network call interceptor
a. dio:

_dio = Dio(BaseOptions());
_dio.interceptors.add(Infospect.instance.dioInterceptor);
copied to clipboard
b. http:
http.Client client = http.Client();
client = Infospect.instance.httpClientInterceptor(client: client);
copied to clipboard

Adding logs

Infospect.instance.addLog(
InfospectLog(
message: logMessage,
level: level,
error: error,
stackTrace: stackTrace,
),
);
copied to clipboard

Adding invoker to get and overlay button to open the infospect window
state: alwaysOpened, collapsible, autoCollapse

InfospectInvoker(
state: InvokerState.collapsible,
child: child,
);
copied to clipboard
This can be wrapped around the child widget returned from the builder method of MaterialApp.
By this, the invoker will be available on all the screens of the app.
If a navigator key is provided in the ensureInitialized method, then the navigator key can be used here, if not provided a new navigator key will be created by Infospect and can be accessed using Infospect.instance.getNavigatorKey and can be used as below
MaterialApp(
navigatorKey: Infospect.instance.getNavigatorKey,
theme: ThemeData(useMaterial3: true),
darkTheme: ThemeData.dark(useMaterial3: true),
themeMode: ThemeMode.dark,
builder: (context, child) {
return InfospectInvoker(
state: InvokerState.collapsible,
child: child ?? const SizedBox.shrink(),
);
},
home: const MainApp(),
)
copied to clipboard
In desktop the infospect window will be opened in a new window, and it can be invoked by clicking on the invoker or using the mentioned shortcut keys

macOS: ⌘ + ⌥ + i (Command + Option + i)
Windows: Ctrl + Alt + i
Linux: Ctrl + Alt + i

But in mobile the infospect window will be opened in a new route.
Upcoming Feature #

Breakpoints for network call to edit request and response.
Add support for more network client.
Sorting of the logs and network calls.
An example app having multiple screens to show the usage of the plugin with network call and selection for respective network library to be intercepted and logger implementation.
Bug fixes and many more.

Support #
This plugin is free to use and currently in its early stages of development. We plan to add many
more features soon. Please visit
the Github Project to know about the upcoming
feature and fixes. If you encounter any issues or would like additional features, please raise an
issue in the GitHub repository.
Feel free to contribute to this project by creating a pull request with a clear description of your
changes.
If this plugin was useful to you, helped you in any way, saved you a lot of time, or you just want
to support the project, I would be very grateful if you buy me a cup of coffee. Your support helps
maintain and improve this project.

License

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

Files:

Customer Reviews

There are no reviews.