搜索插件、代码仓与 APP 分类

chucker_flutter 封面
插件详情v1.9.2

chucker_flutter

Chucker Flutter 帮助您检查 HTTP(S) 请求/响应。它会将数据本地存储,并提供一个 UI 来检查网络调用并共享其内容。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
2.3万
喜欢数
198
Pub 分数
130

安装插件

flutter pub add chucker_flutter

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Chucker Flutter 是一个网络调试工具,可直接在您的应用中捕获并显示 HTTP(S) 请求和响应。它将数据本地存储,并提供直观的用户界面来检查调用详情、请求头、请求体和元数据。非常适合开发和测试,能够快速排查 API 交互问题,并支持共享捕获的数据以促进协作。可在多个平台上使用,并能无缝集成到 Flutter 应用中。

适合场景

  • 开发过程中调试 API 调用
  • 检查请求/响应标头和正文
  • 与团队成员共享网络数据
  • 在不同条件下测试网络行为
  • 监控 HTTP 请求的性能

主要特点

  • 本地存储网络调用
  • 交互式检查UI
  • 支持所有主要平台
  • 轻松共享捕获的数据
  • Minimal setup with pub add
  • HTTP(S) 流量的实时监控

适合对象

  • 正在积极开发的Flutter开发者
  • 团队协作进行API集成
  • 需要详细网络日志的应用程序
  • 前端工程师调试后端问题
  • QA测试人员验证API行为

使用建议

  • 不适用于生产环境
  • 可能会影响调试模式下的性能
  • 在发布版本中需要手动启用
  • 设备上可能有存储限制
  • UI 仅在调试版本中可见

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Stand With Palestine

Chucker Flutter

Codecov Badge Pub.dev Badge Popularity GitHub Build Badge MIT License Badge Flutter Platform Badge Stars Developed By Badge

Chucker Flutter

StandWithPalestine

An HTTP requests inspector inspired by Chucker Android

Chucker Flutter inspects the HTTP(S) requests/responses triggered by your Flutter App. It works as an Interceptor and stores data related to network requests and responses on local storage, and providing a UI for inspecting and sharing their content.

Flutter Apps, using Chucker Flutter, show in-app notifications which tell the status (e.g. 200, 400, 500 and so) and requested url and upon clicking on details button it navigates to Chucker Flutter main screen. You can manipulate Chucker Flutter behaviour using its setting by navigating to Settings page from the menu button of Chucker Flutter main page.

chucker http sample

Getting Started

To use Chucker Flutter you need to add the pub spec dependency to your pubspec.yaml file of your flutter app.

Please verify the current latest version of Chucker Flutter so that you can enjoy the latest features.

dependencies:
  chucker_flutter: latest-version

or

just run the command

flutter pub add chucker_flutter

To make Chucker Flutter work in Dio, just add it in your Dio object e.g.:

Dio().interceptors.add(ChuckerDioInterceptor());

To make Chucker Flutter work in Http, you need to use ChuckerHttpClient object e.g.:

final _chuckerHttpClient = ChuckerHttpClient(http.Client());
_chuckerHttpClient.get(Uri.parse('$_baseUrl$path'));

To make Chucker Flutter work in Chopper, you need to use ChuckerChopperInterceptor object e.g.:

final client = ChopperClient(
        baseUrl: 'https://jsonplaceholder.typicode.com',
        interceptors: [
          ChuckerChopperInterceptor(),
        ]
);

The very last thing is to connect Chucker Flutter screens to your app by wiring ChuckerFlutter.navigatorKey into whichever widget owns your root Navigator.

MaterialApp (most apps)

MaterialApp(
  navigatorKey: ChuckerFlutter.navigatorKey,
  ...,
);

MaterialApp.router with GoRouter

MaterialApp.router does not accept a navigatorKey — pass it to GoRouter instead:

final _router = GoRouter(
  navigatorKey: ChuckerFlutter.navigatorKey,
  routes: [...],
);

MaterialApp.router(
  routerConfig: _router,
  ...,
);

MaterialApp.router with a custom RouterDelegate

Pass ChuckerFlutter.navigatorKey to your delegate's constructor and use it as the key on its root Navigator:

class AppRouterDelegate extends RouterDelegate<...> {
  AppRouterDelegate() : navigatorKey = ChuckerFlutter.navigatorKey;

  @override
  final GlobalKey<NavigatorState> navigatorKey;

  @override
  Widget build(BuildContext context) {
    return Navigator(
      key: navigatorKey,
      pages: [...],
      onDidRemovePage: ...,
    );
  }
}

The previous navigatorObservers: [ChuckerFlutter.navigatorObserver] integration is deprecated and unreliable with nested navigators — it still works as a fallback so existing apps keep running, but new integrations should use navigatorKey.

By default Chucker Flutter only runs in debug mode but you can allow it to run in release mode too using its showOnRelease property e.g.:

void main() {
  ChuckerFlutter.showOnRelease = true;
  runApp(const App());
}

Congratulations! 🎊 You are done. Rest on us!

Features

  • Support for Dio and Http
  • Works in all (Windows💻, Linux🖥️, Mac🧑‍💻, Web🌍, Android📱, iOS📲) platforms (⚠️For android you need to make minSdkVersion 22 in build.gradle file)
  • Easy integration
  • Customization
  • Localization (Current support for English 🇺🇸 and Urdu 🇵🇰)
  • Searching🔍 and sharing👯
  • Json request and responses in tree form
  • Json request and response in pretty json format
  • Image URL preview
  • ChuckerHttpLoggingInterceptor for better readability of http request and response sent from client. To use this just add this interceptor in your ChopperClient
final exampleClient = ChopperClient(
  services: [
    _$ChopperApiService(),
  ],
  interceptors: [
    ChuckerHttpLoggingInterceptor() //This for logging,
    ChuckerChopperInterceptor(),
  ],
);

image

Libraries

Chucker FLutter uses the following open source libraries:

Patrons

I extend my sincere appreciation to all the sponsors. Thank you for making a difference in the open source community!❤️ (You can also sponsor my work, please visit patreon.com)


Rafay Ali

Contributors

Special thanks to these wonderful people👏 who are making our community bigger and better🔥


Adeyemo Adedamola

📖

fachrifaul

📖

Navneet Singh

📖

Sergei

📖

Syifa Ainnur

📖

Erick Armen

📖

Aleksandr Lozhkovoi

📖

Leo Ngo

📖

Kashyap Bhat

📖

KeeganDC

📖

Mateen Mehmood

📖

Cuong Nguyen

📖

License

MIT License

Copyright (c) 2022 Syed Murtaza

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

所属分类

依赖

依赖清单 5 项

源码仓库

使用此插件的项目