dio_debug_logger 0.1.0
dio_debug_logger: ^0.1.0 copied to clipboard
In-app network inspector for Dio: draggable debug button, request list with search and filters, request/response details, stats, retry and cURL/Postman export.
dio_debug_logger #
In-app network inspector for Dio: a draggable debug button, request list with search and filters, request/response/error details, statistics, retry and cURL / Postman / JSON export — integrated with two lines of code.
Dio üçün şəbəkə log/debug aləti. Bütün UI kitabxananın içindədir — inteqrasiya etdiyin appda iki sətir kifayət edir.
| Sürüklənən FAB (badge ilə) | ✅ kitabxanada |
| Log siyahısı + axtarış + filtr | ✅ |
| Detal (Request / Response / Error) | ✅ |
| Analitika | ✅ |
| cURL / Postman / JSON / Summary kopyalama | ✅ |
| Retry | ✅ |
| Responsive (telefon → planşet, böyük font) | ✅ |
1. Quraşdırma #
dependencies:
dio_debug_logger: ^0.1.0
və ya terminaldan:
flutter pub add dio_debug_logger
2. İnteqrasiya (2 sətir) #
import 'package:dio_debug_logger/dio_debug_logger.dart';
// 1) Dio-ya interceptor
dio.interceptors.add(DebugLogging());
// 2) MaterialApp-a overlay
MaterialApp(
builder: NetworkLogger.overlayBuilder(enabled: isDevEnvironment),
home: ...,
);
Bu qədər. FAB, təkrar açılış qoruması, canlı yenilənmə, bağlama düyməsi — hamısı kitabxanadadır.
navigatorKey və ya navigatorObservers məcburi deyil: Navigator alt ağacda avtomatik tapılır.
Mövcud builder varsa #
builder: (context, child) {
return MediaQuery(
data: ...,
child: DebugOverlay(
enabled: isDevEnvironment,
child: child ?? const SizedBox.shrink(),
),
);
},
3. Konfiqurasiya #
NetworkLogger.overlayBuilder(
enabled: true, // prod-da false ver
backgroundColor: UIColor.primary,
foregroundColor: Colors.white,
icon: Icons.bug_report_rounded,
buttonSize: 56,
showBadge: true, // sorğu/xəta sayı
initialAlignment: Alignment.centerLeft,
snapToEdge: true, // buraxdıqda kənara yapışsın
);
// Yaddaşda saxlanılan sorğu limiti (default 200)
NetworkLogger.configure(maxRequests: 500);
// "Retry" düyməsi öz Dio-nu istifadə etsin (cert pinning, baseOptions və s.)
NetworkLogger.retryClientBuilder = () => myDio;
// Interceptor parametrləri
dio.interceptors.add(DebugLogging(
printToConsole: kDebugMode,
redactSensitiveHeaders: true, // konsolda Authorization maskalanır
maxConsoleBodyLength: 2000,
));
4. Proqramla açmaq #
NetworkLogger.open(context); // və ya köhnə API: openDebugPage(context)
NetworkLogger.close(context);
NetworkLogger.isOpen; // bool
NetworkLogger.isOpenNotifier; // ValueListenable<bool>
5. Loglara birbaşa müraciət #
final storage = DebugStorage(); // singleton, ChangeNotifier
storage.count; // ümumi
storage.errorCount; // xətalı
storage.successCount;
storage.pendingCount;
storage.averageElapsedMs;
storage.requests; // List<DebugModel> (ən yenisi əvvəldə)
storage.setRecording(false); // müvəqqəti dayandır
storage.clear();
storage.deleteById(id);
storage.exportAll(redact: true); // List<Map<String, dynamic>>
DebugStorage ChangeNotifier-dir — UI-də ListenableBuilder(listenable: DebugStorage(), ...)
ilə istifadə edə bilərsən. Kitabxananın öz səhifələri artıq özləri qulaq asır, ona görə
DebugPage-i sarımağa ehtiyac yoxdur.
6. Debug səhifəsindəki imkanlar #
- Axtarış — URL, metod, status kodu üzrə
- Filtr — All / Success / Errors / Pending
- Çoxlu seçim — uzun basıb seç, toplu sil
- Sağa sürüşdür — tək logu sil
- ⋮ menyusu — Analytics, Pause recording, Copy all as JSON, Clear all
- Detal — Request / Response / Error tabları, JSON ağacı ↔ xam mətn keçidi, header-lər, ölçü və müddət göstəriciləri
- Kopyala — cURL, Postman collection, JSON, oxunaqlı xülasə, yalnız response body
(
Hide tokensaçarı iləAuthorization/cookiemaskalanır) - Retry — sorğunu yenidən göndər, cavabı yerində gör
7. Responsive davranış #
- Telefon: ekran genişliyinə görə
0.85–1.15arası ölçüləndirmə - Planşet:
1.12(≥600dp) /1.25(≥900dp) — əvvəlki3.0əmsalı mətnləri daşırırdı - Geniş ekranda məzmun mərkəzləşir və maksimum 1000dp genişlikdə saxlanılır
- Sistemin "font size" ayarı
1.25-lə məhdudlaşdırılır ki, mətn qutulardan çıxmasın - Bütün mətnlərdə
maxLines+ellipsis, uzun dəyərlərSelectableTextilə sarılır
Testlər #
flutter test