smooth_chucker 0.0.2
smooth_chucker: ^0.0.2 copied to clipboard
An HTTP requests inspector with isolate support for better performance. Inspects HTTP(S) requests/responses in your app with Material 3 UI and advanced search capabilities.
Smooth Chucker #
An enhanced HTTP requests inspector for Flutter applications inspired by Chucker Flutter but built with improved performance and modern design.
Smooth Chucker inspects HTTP(S) requests and responses in your Flutter app. It works as an interceptor for popular HTTP client libraries and stores network requests and responses in local storage, providing a Material 3 UI for inspecting and sharing content.
Features #
- 🚀 Isolate Support: Background processing to prevent UI freezes while handling network requests
- 🎨 Material 3 Design: Modern, beautiful interface that follows latest design guidelines
- 🔍 Advanced Search: Search by API name, method, status code, and more
- 💾 Multiple Client Support: Works with Dio, Http, and Chopper HTTP clients
- 🖥️ Cross-Platform: Works on Android, iOS, Web, Windows, macOS, and Linux
- 🔔 In-App Notifications: See request status and details as they happen
- 🔄 JSON Tree View: Visualize JSON responses in both tree and raw formats
- 📋 Sharing & Copying: Export as cURL commands, share with colleagues
- ⚙️ Customizable: Themes, notification settings, and more
Getting Started #
1. Add the dependency #
Add the following to your pubspec.yaml
:
dependencies:
smooth_chucker: any
Or run:
flutter pub add smooth_chucker
2. Add Interceptor to your HTTP client #
For Dio:
import 'package:dio/dio.dart';
import 'package:smooth_chucker/smooth_chucker.dart';
final dio = Dio();
dio.interceptors.add(SmoothChuckerDioInterceptor());
For Http:
import 'package:http/http.dart' as http;
import 'package:smooth_chucker/smooth_chucker.dart';
final client = SmoothChuckerHttpClient(http.Client());
client.get(Uri.parse('https://api.example.com/data'));
For Chopper:
import 'package:chopper/chopper.dart';
import 'package:smooth_chucker/smooth_chucker.dart';
final client = ChopperClient(
baseUrl: 'https://api.example.com',
interceptors: [
SmoothChuckerChopperInterceptor(),
],
);
3. Add the Navigator Observer #
In your MaterialApp:
import 'package:smooth_chucker/smooth_chucker.dart';
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorObservers: [SmoothChucker.navigatorObserver],
// ...
);
}
4. Initialize Notifications (optional but recommended) #
In your app's root widget:
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
SmoothChucker.initialize(Overlay.of(context)!);
});
}
5. Launch the UI #
Add a button to launch the Smooth Chucker UI:
ElevatedButton(
onPressed: () => SmoothChucker.launch(context),
child: const Text('Launch Smooth Chucker'),
)
Customization #
Enable in Release Mode #
By default, Smooth Chucker only runs in debug mode. You can enable it in release mode:
void main() {
SmoothChucker.showOnRelease = true;
runApp(const MyApp());
}
Custom Theming #
MaterialApp(
theme: SmoothChucker.getLightTheme(Colors.purple, Colors.amber),
darkTheme: SmoothChucker.getDarkTheme(Colors.purple, Colors.amber),
// ...
)
API Name and Search Keywords #
When using Dio, you can add custom API names and search keywords:
final dio = Dio();
dio.options.extra['api_name'] = 'User Authentication';
dio.options.extra['search_keywords'] = ['login', 'auth', 'user'];
Advanced Usage #
Controlling Notifications #
// Disable notifications
SmoothChucker.setNotificationsEnabled(false);
Manually Adding API Responses #
import 'package:smooth_chucker/smooth_chucker.dart';
final apiResponse = ApiResponse(
// ... required parameters
apiName: 'Custom API Call',
searchKeywords: ['custom', 'test'],
);
// Use DatabaseService to add the response
final dbService = DatabaseService();
await dbService.addApiResponse(apiResponse);
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
License #
This project is licensed under the MIT License - see the LICENSE file for details.