{"id":32275031,"url":"https://github.com/kushalmahapatro/infospect","last_synced_at":"2026-02-22T18:01:33.560Z","repository":{"id":185106533,"uuid":"672743459","full_name":"kushalmahapatro/infospect","owner":"kushalmahapatro","description":"Infospect meaning Information Inspector is a Flutter plugin for that empowers the developers to debug the network calls and logs in the app.","archived":false,"fork":false,"pushed_at":"2025-04-25T04:53:31.000Z","size":30874,"stargazers_count":12,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-22T23:45:15.014Z","etag":null,"topics":["dart","dio","flutter","http","information","information-inspect","information-inspecter","inspect","multi-windows"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/infospect","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kushalmahapatro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-31T04:16:24.000Z","updated_at":"2025-06-09T07:57:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"55d10c45-08a5-4494-80b9-989f0b2968c3","html_url":"https://github.com/kushalmahapatro/infospect","commit_stats":null,"previous_names":["kushalmahapatro/infospect"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/kushalmahapatro/infospect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushalmahapatro%2Finfospect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushalmahapatro%2Finfospect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushalmahapatro%2Finfospect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushalmahapatro%2Finfospect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kushalmahapatro","download_url":"https://codeload.github.com/kushalmahapatro/infospect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushalmahapatro%2Finfospect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29721046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","dio","flutter","http","information","information-inspect","information-inspecter","inspect","multi-windows"],"created_at":"2025-10-22T23:43:17.599Z","updated_at":"2026-02-22T18:01:33.547Z","avatar_url":"https://github.com/kushalmahapatro.png","language":"Dart","funding_links":["https://www.buymeacoffee.com/kushalm"],"categories":[],"sub_categories":[],"readme":"# Overview\n\nInfospect meaning Information Inspector is a Flutter plugin for that empowers the developers to\ndebug the network calls and logs in the app. It is a powerful tools that offer network call\ninterception and logging features, among others. By allowing developers to monitor and intercept\nnetwork calls, they can efficiently debug network-related issues and optimize app performance. The\nlogging and debugging capabilities aid in understanding app behavior and detecting errors, leading\nto faster bug resolution.\n\n## Preview\n\n##### iOS\n![](images/preview/ios.gif)\n##### macOS - Opening Infospect in new Window\n![](images/preview/mac.gif)\n##### Linus (Ubuntu VM in mac)- Opening Infospect in new Window\n![](images/preview/linux(ubuntu%20vm).gif)\n##### Window 10 - (VM in mac) - Opening Infospect in new Window\n![](images/preview/windows.gif)\n\n## Getting started\n\n1. Add the dependency to your pubspec.yaml file. (Replace latest-version with the latest version of\n   the plugin)\n\n  ```yaml\n  dependencies:\n    infospect: latest-version\n  ```\n\nor using the below command\n\n  ```console\n  flutter pub add infospect\n  ```\n\n## Usage\n\n1. Adding args to main, to enable the support of multi window. Plugin used for\n   this [https://pub.dev/packages/desktop_multi_window](https://pub.dev/packages/desktop_multi_window)\n\n  ```dart\n  void main(List\u003cString\u003e args) {}\n  ```\n\n2. Initialize the plugin in main.dart\n\n  ```dart\n    WidgetsFlutterBinding.ensureInitialized();\n    Infospect.ensureInitialized();\n  ```\n  \n  ```dart\n  Infospect ensureInitialized({\n    int maxCallsCount = 1000,\n    GlobalKey\u003cNavigatorState\u003e? navigatorKey,\n    bool logAppLaunch = false,\n    void Function(String path)? onShareAllNetworkCalls,\n    void Function(String path)? onShareAllLogs,\n  }\n  ```\n\nIn ensureInitialized we can configure the **maxCallCount** `int` for both network calls and logs,\ndefaults to 1000.\nA **navigatorKey** `GlobalKey\u003cNavigatorState\u003e` that will be used for navigation and dialog, if not\nprovided a new key will be created.\nA bool value to **logAppLaunch**, if true will log the app launch with details like below, defaults to\ntrue,\n\n  ```\n  App name:  Example\n  Package: com.example.example\n  Version: 0.1.0\n  Build number: 0.1.0\n  Started at: 2023-08-20T13:39:56.531974\n  ```\n\nA call back to handle the share functionality for all the network calls **onShareAllNetworkCalls**,\nThis will provide the path of the compressed file name infospect_network_calls_log.tar.gz, which can\nbe shared accordingly.\nIf not provided, the default platform share option will be invoked.\n\nA call back to handle the share functionality for all the logs **onShareAllLogs**,\nThis will provide the path of the compressed file name infospect_logs.tar.gz, which can be shared\naccordingly.\nIf not provided, the default platform share option will be invoked.\n\n3. As in desktop a new window is used to show the infospect window, we need to add the following\n   code in main.dart, as this will help to handle the data received to the main window from the\n   infospect window.\n  ```dart\n    Infospect.ensureInitialized();\n    Infospect.instance.handleMainWindowReceiveData();\n  ```\n\nelse can be also combined with ensureInitialized\n  ```dart\n    Infospect.ensureInitialized(logAppLaunch: true).handleMainWindowReceiveData()\n  ```\n\n4. Rather using runApp using, use `Infospect.instance.run(args, myApp: EntryWidget())`;\n   This will help to set the args and use it when launching the infospect window in Desktop\n  ```dart\n    Infospect.instance.run(args, myApp: const MainApp());\n  ```\n5. Adding network call interceptor\n   a. dio:\n  ```dart\n    _dio = Dio(BaseOptions());\n    _dio.interceptors.add(Infospect.instance.dioInterceptor);\n  ```\n   b. http:\n  ```dart\n    http.Client client = http.Client();\n    client = Infospect.instance.httpClientInterceptor(client: client);\n  ```\n6. Adding logs\n  ```dart\n    Infospect.instance.addLog(\n      InfospectLog(\n        message: logMessage,\n        level: level,\n        error: error,\n        stackTrace: stackTrace,\n      ),\n    );\n  ```\n  7. Adding invoker to get and overlay button to open the infospect window\n  state:  `alwaysOpened`, `collapsible`, `autoCollapse`\n  ```dart\n    InfospectInvoker(\n      state: InvokerState.collapsible,\n      child: child,\n    );\n  ```\n  This can be wrapped around the child widget returned from the builder method of MaterialApp.\n  By this, the invoker will be available on all the screens of the app.\n\n  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\n  ```dart\n    MaterialApp(\n      navigatorKey: Infospect.instance.getNavigatorKey,\n      theme: ThemeData(useMaterial3: true),\n      darkTheme: ThemeData.dark(useMaterial3: true),\n      themeMode: ThemeMode.dark,\n      builder: (context, child) {\n        return InfospectInvoker(\n          state: InvokerState.collapsible,\n          child: child ?? const SizedBox.shrink(),\n        );\n      },\n      home: const MainApp(),\n    )\n  ```\n  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\n  \u003e macOS: `⌘ + ⌥ + i` (Command + Option + i)\n  \u003e Windows: `Ctrl + Alt + i`\n  \u003e Linux: `Ctrl + Alt + i`\n\n  But in mobile the infospect window will be opened in a new route.\n\n## Upcoming Feature\n\n1. Breakpoints for network call to edit request and response.\n2. Add support for more network client.\n3. Sorting of the logs and network calls.\n4. 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.\n5. Bug fixes and many more.\n\n\n## Support\n\nThis plugin is free to use and currently in its early stages of development. We plan to add many\nmore features soon. Please visit\nthe [Github Project](https://github.com/users/kushalmahapatro/projects/2) to know about the upcoming\nfeature and fixes. If you encounter any issues or would like additional features, please raise an\nissue in the [GitHub repository](https://github.com/kushalmahapatro/infospect/issues).\n\nFeel free to contribute to this project by creating a pull request with a clear description of your\nchanges.\n\nIf this plugin was useful to you, helped you in any way, saved you a lot of time, or you just want\nto support the project, I would be very grateful if you buy me a cup of coffee. Your support helps\nmaintain and improve this project.\n\n\n\u003ca href=\"https://www.buymeacoffee.com/kushalm\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/purple_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkushalmahapatro%2Finfospect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkushalmahapatro%2Finfospect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkushalmahapatro%2Finfospect/lists"}