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.

pub package


Features

Core Extensions

  • Null-safe checks like .isNullOrEmpty on String? and List?
  • Safe conversions: .toTryInt(), .toTryDouble(), .toTryBool()
  • String helpers: .capitalize(), .toPascalCase(), .toCamelCase()
  • DateTime parsing and formatting
  • safeSetState: calls setState() only if the widget is still mounted

Form Validators

  • required, email, phone, otp, password, confirmPassword
  • minLength, maxLength, numeric, url, pattern
  • FormValidators.compose([...]) — chain validators, returns the first error
  • FormValidators.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 / xxl helpers on BuildContext or BoxConstraints
  • deviceType, isMobile, isTablet, isDesktop — coarse device classification
  • responsive<T>(base: ..., md: ..., lg: ...) — pick a value per breakpoint, no LayoutBuilder needed
  • screenWidth, screenHeight, isPortrait, isLandscape on BuildContext

Error Handling

  • CorextraException, CorextraCustomException, CorextraNetworkException
  • DioErrorHandler maps Dio errors to user-friendly, typed exceptions

Logging

  • debugLog — lightweight, debug-only logger with LogLevel (info / warning / error)
  • AppLogger — structured logging for app events and Dio requests/responses/errors
  • AppLoggerInterceptor — pretty, color-coded Dio logs, one block per event (toggle with enabled: false)

Animation

  • FadeSlideTransition — combined fade + slide transition, with top / bottom / left / right / custom directions

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 with hiddenHeaders while keeping copy/share working. JSON renders as a collapsible, syntax-highlighted tree.
  • Logs — every debugLog/AppLogger call, 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