corextra
Handy Dart extensions and utility functions for String, int, double, List, and more — plus form validators, responsive helpers, logging, and an in-app DevTools panel.
Features
Core Extensions
- Null-safe checks like
.isNullOrEmptyonString?andList? - Safe conversions:
.toTryInt(),.toTryDouble(),.toTryBool() - String helpers:
.capitalize(),.toPascalCase(),.toCamelCase() - DateTime parsing and formatting
safeSetState: callssetState()only if the widget is still mounted
Form Validators
required,email,phone,otp,password,confirmPasswordminLength,maxLength,numeric,url,patternFormValidators.compose([...])— chain validators, returns the first errorFormValidators.optional(validator)— skip validation on empty, non-required fields- Every validator takes an optional
message:override - Optional translation support via
easy_localization
Responsive Utilities
ResponsiveBreakpoints:sm/md/lg/xl/xxlhelpers onBuildContextorBoxConstraintsdeviceType,isMobile,isTablet,isDesktop— coarse device classificationresponsive<T>(base: ..., md: ..., lg: ...)— pick a value per breakpoint, noLayoutBuilderneededscreenWidth,screenHeight,isPortrait,isLandscapeonBuildContext
Error Handling
CorextraException,CorextraCustomException,CorextraNetworkExceptionDioErrorHandlermaps Dio errors to user-friendly, typed exceptions
Logging
debugLog— lightweight, debug-only logger withLogLevel(info/warning/error)AppLogger— structured logging for app events and Dio requests/responses/errorsAppLoggerInterceptor— pretty, color-coded Dio logs, one block per event (toggle withenabled: false)
Animation
FadeSlideTransition— combined fade + slide transition, withtop/bottom/left/right/customdirections
DevTools Panel
An in-app inspector styled after Flutter DevTools. No separate DevTools connection needed, and it's automatically disabled outside debug builds.
MaterialApp(
builder: (context, child) =>
CorextraDevToolsOverlay(child: child ?? const SizedBox.shrink()),
home: const HomeScreen(),
)
dio.interceptors.add(const CorextraDevToolsInterceptor());
A draggable bubble opens the panel:
- Network — every request/response, searchable and filterable by method or status. Headers, query params, and body each get their own tab. Sensitive headers (
Authorization,Cookie, etc.) get a TOKEN badge — mask the value withhiddenHeaderswhile keeping copy/share working. JSON renders as a collapsible, syntax-highlighted tree. - Logs — every
debugLog/AppLoggercall, searchable and filterable by level. - Info — app and device details via
package_info_plus/device_info_plus. - Performance (under More) — a live FPS/frame-time chart with jank highlighting.
Tap Minimize to shrink the panel into a small floating window. Android's back button closes whatever's open in the panel one step at a time, instead of affecting the host app underneath it. Toggle everything at runtime with CorextraDevTools.instance.enabled.
Planned: a widget/layout inspector, memory heap snapshots, a storage viewer, and a route/navigation inspector.
Getting Started
Add the dependency:
dependencies:
corextra: ^1.2.8
Import it:
import 'package:corextra/corextra.dart';
Example
A runnable demo app lives in example/, including the DevTools panel:
cd example
flutter pub get
flutter run
Libraries
- animation/fade_slide_transition
- corextra
- devtools/devtools_controller
- devtools/interceptors/corextra_devtools_interceptor
- devtools/models/frame_sample
- devtools/models/log_entry
- devtools/models/network_event
- devtools/overlay/corextra_devtools_overlay
- devtools/overlay/devtools_bubble
- devtools/overlay/devtools_floating_window
- devtools/overlay/draggable_floating_widget
- devtools/panel/back_handler_scope
- devtools/panel/devtools_panel
- devtools/panel/devtools_tabs
- devtools/panel/empty_state
- devtools/panel/scroll_to_top_fab
- devtools/panel/search_field
- devtools/panel/tabs/info_tab
- devtools/panel/tabs/logs_tab
- devtools/panel/tabs/network_tab
- devtools/panel/tabs/performance_tab
- devtools/util/devtools_theme
- devtools/util/memory_probe
- devtools/util/memory_probe_io
- devtools/util/memory_probe_stub
- devtools/util/pretty_json
- exceptions/corextra_exceptions
- extensions/date_time_extensions/nullable_date_time_extensions
- extensions/double_extensions/double_extensions
- extensions/int_extensions/int_extensions
- extensions/list_extensions/list_extensions
- extensions/responsive_extensions/responsive_constraints_extensions
- extensions/responsive_extensions/responsive_context_extensions
- extensions/state_extensions/state_extensions
- extensions/string_extensions/non_nullable_string_extensions
- extensions/string_extensions/nullable_string_extensions
- functions/validators
- logs/app_logger
- logs/debug_log
- logs/enum/log_color
- logs/enum/log_level
- network/app_logger_interceptor
- network/dio_error_handler
- responsive/responsive_breakpoints
- validators/form_validators