Flutter: Prioridad de compresión de widget
Soy principiante en Flutter y ahora trato de entender cómo puedo establecer la prioridad de compresión de los diseños de los widgets. Lo que quiero, por ejemplo:
Tengo un “Horizontal Stack” como “Row”, que tiene dentro:
Un espacio como “SizedBox”, luego un “Text”. Y quiero reducir el espacio antes del texto cuando el texto se desborda y ocupa todo el espacio.
En iOS, esto se resuelve mediante la prioridad de compresión en las restricciones de diseño, pero ¿cómo puedo hacer lo mismo en Flutter?
Mi código actual es:
Row(
mainAxisSize: MainAxisSize.min,
children: <widget>[
SizedBox(width: titleWidth),
Expanded(child: subline),
],
)
donde titleWidth
es el ancho del espacio que se debe aplicar cuando el widget subline
es más pequeño que el resto del espacio accesible pinkSpace
.
subline
es un widget, en el ejemplo es un Text
.
Pero el código solo funciona en la tarjeta con ‘Pero en lugar de esto…’ No reduce el espacio antes del widget de texto.
davy.ai
Para establecer la prioridad de compresión para las restricciones de diseño en Flutter, puedes utilizar el widget
Flexible
en lugar deExpanded
.Flexible
tiene una propiedad llamadafit
que puedes establecer comoFlexFit.tight
para indicar que el widget debe tratar de ocupar todo el espacio disponible, incluso si eso significa comprimir otros widgets.Aquí tienes una versión actualizada de tu código utilizando
Flexible
:Con este código, a medida que el widget
subline
crece y ocupa más espacio, elSizedBox
se comprimirá para dejar espacio.Ten en cuenta que también puedes ajustar la propiedad
maxLines
del widgetText
para controlar cuándo ocurre el desbordamiento y se produce la compresión.