AppRadius class
Sistema de border radius para mantener consistencia visual en bordes redondeados
AppRadius proporciona una escala unificada de redondez basada en AppSizes, con múltiples formatos listos para usar en diferentes contextos de Flutter. Esto garantiza coherencia visual y facilita el diseño de interfaces modernas.
📦 Formatos Disponibles
- Valores base (double) - Para usar con
BorderRadius.circular() - BorderRadius - Listo para
BoxDecoration.borderRadius - Radius - Para esquinas individuales con
BorderRadius.only() - RoundedRectangleBorder - Para
shapeen botones y cards - Bordes parciales - Top, bottom, left, right
📏 Escala de Radius
La escala completa (basada en AppSizes):
none(0.0) → Esquinas cuadradasxxs(2.0) → Mínimo redondeoxs(4.0) → Extra pequeñosm(6.0) → Pequeño (chips, tags)smd(8.0) → Pequeño-mediano (botones pequeños)mds(10.0) → Mediano-pequeñomd(12.0) → Mediano ⭐ (estándar componentes)mdl(14.0) → Mediano-grandelg(16.0) → Grande (cards importantes)lgx(18.0) → Grande-extraxl(20.0) → Extra grandexxl(24.0) → Extra extra grandexxxl(28.0) → Triple extra grandehuge(32.0) → Enormemassive(40.0) → Masivogiant(48.0) → Gigantecircular(999.0) → Completamente circular (pill)
🎨 Uso Básico
// ✅ Valores base (double) - Con BorderRadius.circular()
Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(AppRadius.md), // 12.0
),
)
// ✅ BorderRadius - Directo en BoxDecoration
Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: AppRadius.borderLg, // BorderRadius.circular(16.0)
),
)
// ✅ Radius - Para esquinas individuales
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: AppRadius.radiusMd, // Radius.circular(12.0)
topRight: AppRadius.radiusLg, // Radius.circular(16.0)
),
),
)
// ✅ RoundedRectangleBorder - Para botones
ElevatedButton(
style: ElevatedButton.styleFrom(
shape: AppRadius.shapeMd, // RoundedRectangleBorder
),
child: Text('Botón'),
)
// ✅ Card con shape
Card(
shape: AppRadius.shapeLg, // RoundedRectangleBorder
child: Content(),
)
// ✅ Bordes parciales - Solo arriba
Container(
decoration: BoxDecoration(
borderRadius: AppRadius.borderTopLg, // Solo esquinas superiores
),
)
// ✅ Botón circular (pill)
ElevatedButton(
style: ElevatedButton.styleFrom(
shape: AppRadius.shapeCircular, // Completamente circular
),
child: Text('Pill Button'),
)
📱 Patrones Comunes por Componente
Botones:
// Botón estándar
ElevatedButton(
style: ElevatedButton.styleFrom(
shape: AppRadius.shapeMd, // 12.0 - Redondez moderada
),
)
// Botón pill
ElevatedButton(
style: ElevatedButton.styleFrom(
shape: AppRadius.shapeCircular, // Completamente circular
),
)
Cards:
// Card estándar
Card(
shape: AppRadius.shapeMd, // 12.0 - Coherente con Material
child: Content(),
)
// Card destacada
Card(
shape: AppRadius.shapeLg, // 16.0 - Más suave y moderna
child: Content(),
)
Inputs:
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: AppRadius.borderSmd, // 8.0 - Sutil
),
),
)
Bottom Sheets:
// Solo esquinas superiores redondeadas
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: AppRadius.borderTopLg, // Solo arriba
),
)
Imágenes:
ClipRRect(
borderRadius: AppRadius.borderMd, // 12.0
child: Image.network('url'),
)
Chips y Tags:
Container(
decoration: BoxDecoration(
borderRadius: AppRadius.borderSm, // 6.0 - Compacto
),
)
🎯 Guía de Selección
Por Tamaño del Componente:
- Elementos pequeños (< 40px) →
xsasm(4-6) - Elementos medianos (40-80px) →
smdamd(8-12) ⭐ - Elementos grandes (80-150px) →
lgaxl(16-20) - Elementos muy grandes (> 150px) →
xxlahuge(24-32)
Por Propósito:
- Botones estándar →
md(12.0) - Botones pill →
circular(999.0) - Cards →
mdalg(12-16) - Inputs →
smdamd(8-12) - Modals →
lgaxl(16-20) - Images →
mdalg(12-16) - Chips/tags →
smasmd(6-8)
Por Estilo:
- Minimalista/corporativo →
xsasm(4-6) - Moderno/estándar →
mdalg(12-16) ⭐ - Amigable/casual →
lgaxxl(16-24) - Juguetón →
xxlahuge(24-32)
💡 Recomendaciones
- Consistencia: Usa la misma redondez para componentes similares
- Proporción: El radius debe ser proporcional al tamaño del elemento
- No exageres: Demasiada redondez puede verse poco profesional
- Material Design:
md(12.0) es el estándar de Material 3 - Accesibilidad: Los bordes redondeados mejoran la jerarquía visual
- Performance: Los bordes muy redondeados pueden afectar rendimiento
❌ Evitar
// ❌ NO uses valores arbitrarios
BorderRadius.circular(13.7)
Radius.circular(17.3)
// ✅ USA la escala predefinida
AppRadius.borderMd // BorderRadius.circular(12.0)
AppRadius.radiusLg // Radius.circular(16.0)
// ❌ NO mezcles estilos inconsistentes
Card(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(7)))
ElevatedButton(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(19)))
// ✅ USA escalas consistentes
Card(shape: AppRadius.shapeMd) // 12.0
ElevatedButton(shape: AppRadius.shapeMd) // 12.0
🔗 Ver también
- AppSizes para la escala base de tamaños
- AppSpacing para espaciado consistente
- Material Design - Shape
📚 Referencias
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Properties
- borderBottomHuge → BorderRadius
-
Esquinas inferiores redondeadas - 32.0
no setter
- borderBottomLg → BorderRadius
-
Esquinas inferiores redondeadas - 16.0
no setter
- borderBottomMd → BorderRadius
-
Esquinas inferiores redondeadas - 12.0
no setter
- borderBottomSm → BorderRadius
-
Esquinas inferiores redondeadas - 6.0
no setter
- borderBottomSmd → BorderRadius
-
Esquinas inferiores redondeadas - 8.0
no setter
- borderBottomXl → BorderRadius
-
Esquinas inferiores redondeadas - 20.0
no setter
- borderBottomXs → BorderRadius
-
Esquinas inferiores redondeadas - 4.0
no setter
- borderBottomXxl → BorderRadius
-
Esquinas inferiores redondeadas - 24.0
no setter
- borderCircular → BorderRadius
-
Completamente circular - 999.0
Para botones tipo "pill" o elementos circulares
no setter
- borderGiant → BorderRadius
-
Gigante - 48.0
no setter
- borderHuge → BorderRadius
-
Enorme - 32.0
no setter
- borderLeftLg → BorderRadius
-
Esquinas izquierdas redondeadas - 16.0
no setter
- borderLeftMd → BorderRadius
-
Esquinas izquierdas redondeadas - 12.0
no setter
- borderLeftSm → BorderRadius
-
Esquinas izquierdas redondeadas - 6.0
no setter
- borderLeftSmd → BorderRadius
-
Esquinas izquierdas redondeadas - 8.0
no setter
- borderLeftXl → BorderRadius
-
Esquinas izquierdas redondeadas - 20.0
no setter
- borderLeftXs → BorderRadius
-
Esquinas izquierdas redondeadas - 4.0
no setter
- borderLg → BorderRadius
-
Grande - 16.0
Bueno para cards y containers importantes
no setter
- borderLgx → BorderRadius
-
Grande-extra - 18.0
no setter
- borderMassive → BorderRadius
-
Masivo - 40.0
no setter
- borderMd → BorderRadius
-
Mediano - 12.0
Valor estándar para la mayoría de componentes
no setter
- borderMdl → BorderRadius
-
Mediano-grande - 14.0
no setter
- borderMds → BorderRadius
-
Mediano-pequeño - 10.0
no setter
- borderNone → BorderRadius
-
Sin radio - 0.0
no setter
- borderRightLg → BorderRadius
-
Esquinas derechas redondeadas - 16.0
no setter
- borderRightMd → BorderRadius
-
Esquinas derechas redondeadas - 12.0
no setter
- borderRightSm → BorderRadius
-
Esquinas derechas redondeadas - 6.0
no setter
- borderRightSmd → BorderRadius
-
Esquinas derechas redondeadas - 8.0
no setter
- borderRightXl → BorderRadius
-
Esquinas derechas redondeadas - 20.0
no setter
- borderRightXs → BorderRadius
-
Esquinas derechas redondeadas - 4.0
no setter
- borderSm → BorderRadius
-
Pequeño - 6.0
Bueno para chips y tags pequeños
no setter
- borderSmd → BorderRadius
-
Pequeño-mediano - 8.0
Común en botones pequeños
no setter
- borderTopHuge → BorderRadius
-
Esquinas superiores redondeadas - 32.0
no setter
- borderTopLg → BorderRadius
-
Esquinas superiores redondeadas - 16.0
no setter
- borderTopMd → BorderRadius
-
Esquinas superiores redondeadas - 12.0
no setter
- borderTopSm → BorderRadius
-
Esquinas superiores redondeadas - 6.0
no setter
- borderTopSmd → BorderRadius
-
Esquinas superiores redondeadas - 8.0
no setter
- borderTopXl → BorderRadius
-
Esquinas superiores redondeadas - 20.0
no setter
- borderTopXs → BorderRadius
-
Esquinas superiores redondeadas - 4.0
no setter
- borderTopXxl → BorderRadius
-
Esquinas superiores redondeadas - 24.0
no setter
- borderXl → BorderRadius
-
Extra grande - 20.0
Para elementos destacados
no setter
- borderXs → BorderRadius
-
Extra pequeño - 4.0
Ideal para elementos muy sutiles
no setter
- borderXxl → BorderRadius
-
Extra extra grande - 24.0
no setter
- borderXxs → BorderRadius
-
Extra extra pequeño - 2.0
no setter
- borderXxxl → BorderRadius
-
Extra extra extra grande - 28.0
no setter
- radiusCircular → Radius
-
Completamente circular - 999.0
no setter
- radiusGiant → Radius
-
Gigante - 48.0
no setter
- radiusHuge → Radius
-
Enorme - 32.0
no setter
- radiusLg → Radius
-
Grande - 16.0
no setter
- radiusLgx → Radius
-
Grande-extra - 18.0
no setter
- radiusMassive → Radius
-
Masivo - 40.0
no setter
- radiusMd → Radius
-
Mediano - 12.0
no setter
- radiusMdl → Radius
-
Mediano-grande - 14.0
no setter
- radiusMds → Radius
-
Mediano-pequeño - 10.0
no setter
- radiusNone → Radius
-
Sin radio - 0.0
no setter
- radiusSm → Radius
-
Pequeño - 6.0
no setter
- radiusSmd → Radius
-
Pequeño-mediano - 8.0
no setter
- radiusXl → Radius
-
Extra grande - 20.0
no setter
- radiusXs → Radius
-
Extra pequeño - 4.0
no setter
- radiusXxl → Radius
-
Extra extra grande - 24.0
no setter
- radiusXxs → Radius
-
Extra extra pequeño - 2.0
no setter
- radiusXxxl → Radius
-
Extra extra extra grande - 28.0
no setter
- shapeCircular → RoundedRectangleBorder
-
Forma circular - 999.0
no setter
- shapeGiant → RoundedRectangleBorder
-
Gigante - 48.0
no setter
- shapeHuge → RoundedRectangleBorder
-
Enorme - 32.0
no setter
- shapeLg → RoundedRectangleBorder
-
Grande - 16.0
no setter
- shapeLgx → RoundedRectangleBorder
-
Grande-extra - 18.0
no setter
- shapeMassive → RoundedRectangleBorder
-
Masivo - 40.0
no setter
- shapeMd → RoundedRectangleBorder
-
Mediano - 12.0
no setter
- shapeMdl → RoundedRectangleBorder
-
Mediano-grande - 14.0
no setter
- shapeMds → RoundedRectangleBorder
-
Mediano-pequeño - 10.0
no setter
- shapeNone → RoundedRectangleBorder
-
Sin radio - 0.0
no setter
- shapeSm → RoundedRectangleBorder
-
Pequeño - 6.0
no setter
- shapeSmd → RoundedRectangleBorder
-
Pequeño-mediano - 8.0
no setter
- shapeXl → RoundedRectangleBorder
-
Extra grande - 20.0
no setter
- shapeXs → RoundedRectangleBorder
-
Extra pequeño - 4.0
no setter
- shapeXxl → RoundedRectangleBorder
-
Extra extra grande - 24.0
no setter
- shapeXxs → RoundedRectangleBorder
-
Extra extra pequeño - 2.0
no setter
- shapeXxxl → RoundedRectangleBorder
-
Extra extra extra grande - 28.0
no setter
Static Methods
-
onlyBottom(
double radius) → BorderRadius -
Crea un BorderRadius con solo las esquinas inferiores redondeadas
radius- El radio a aplicar en las esquinas inferiores -
onlyLeft(
double radius) → BorderRadius -
Crea un BorderRadius con solo las esquinas izquierdas redondeadas
radius- El radio a aplicar en las esquinas izquierdas -
onlyRight(
double radius) → BorderRadius -
Crea un BorderRadius con solo las esquinas derechas redondeadas
radius- El radio a aplicar en las esquinas derechas -
onlyTop(
double radius) → BorderRadius -
Crea un BorderRadius con solo las esquinas superiores redondeadas
radius- El radio a aplicar en las esquinas superiores
Constants
- circular → const double
- Completamente circular (pill shape) - 999.0 Para botones tipo "pill" o elementos circulares
- giant → const double
- Gigante - 48.0
- huge → const double
- Enorme - 32.0
- lg → const double
- Grande - 16.0 Bueno para cards y containers importantes
- lgx → const double
- Grande-extra - 18.0
- massive → const double
- Masivo - 40.0
- md → const double
- Mediano - 12.0 Valor estándar para la mayoría de componentes
- mdl → const double
- Mediano-grande - 14.0
- mds → const double
- Mediano-pequeño - 10.0
- none → const double
- Sin radio (esquinas cuadradas) - 0.0
- sm → const double
- Pequeño - 6.0 Bueno para chips y tags pequeños
- smd → const double
- Pequeño-mediano - 8.0 Común en botones pequeños
- xl → const double
- Extra grande - 20.0 Para elementos destacados
- xs → const double
- Extra pequeño - 4.0 Ideal para elementos muy sutiles
- xxl → const double
- Extra extra grande - 24.0
- xxs → const double
- Extra extra pequeño - 2.0
- xxxl → const double
- Extra extra extra grande - 28.0