Saltar al contenido principal

Extensiones

lib/core/extensions/ define métodos de extensión sobre tipos existentes de Dart y Flutter. Su propósito es reducir código repetitivo y mejorar la legibilidad — no contienen lógica de negocio.

Extensiones disponibles

ExtensiónTipo extendidoQué agrega
ContextXBuildContextShortcuts de navegación, acceso a media query, tema y BLoCs.
StringXStringCapitalización, validaciones de formato (email, numérico), limpieza de espacios.
NumberXnumFormateo de moneda y redondeo.
DateTimeXDateTimeFormateo de fechas para presentación en la UI.
ColorXColorAclarar, oscurecer y ajustar opacidad de colores.
WidgetXWidgetHelpers de composición: padding, centrado, expanded.
ValidatorsXString?Validaciones encadenables para el campo validator de formularios Flutter.
DeviceStorageXAcceso al storage local sin necesidad de inyectar el adapter manualmente.
AppServiceXShortcuts a servicios registrados en el locator.

Reglas para agregar una extensión

  • Sobre tipos de Dart/Flutter únicamente: String, BuildContext, Widget, DateTime, Color, etc. No extender clases propias del proyecto.
  • Sin lógica de negocio: si la operación involucra reglas del dominio, pertenece a un caso de uso o a la entidad correspondiente.
  • Nombre de archivo en snake_case con sufijo _x: context_x.dart, string_x.dart.
  • Un archivo por tipo extendido.

Estructura de archivos

lib/
└── core/
└── extensions/
├── context_x.dart
├── string_x.dart
├── number_x.dart
├── date_time_x.dart
├── color_x.dart
├── widget_x.dart
├── validators_x.dart
├── device_storage_x.dart
├── app_service_x.dart
└── extensions.dart # Barrel file
nota

Las extensiones de Flutter (ContextX, WidgetX, ColorX) se exportan solo a través de ui.dart. Las extensiones de Dart puro (StringX, NumberX, DateTimeX) también se exportan a través de foundation.dart.