He usado ambos Expanded
y Flexible
widgets y que parecen funcionar misma. ¿Hay alguna diferencia entre los dos que me perdí?
He usado ambos Expanded
y Flexible
widgets y que parecen funcionar misma. ¿Hay alguna diferencia entre los dos que me perdí?
Respuestas:
Expanded
es solo una abreviatura de Flexible
Usando expandido de esta manera:
Expanded(
child: Foo(),
);
es estrictamente equivalente a:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Es posible que desee utilizar Flexible
over Expanded
cuando desee un fit
diseño diferente , útil en algunos diseños receptivos.
La diferencia entre FlexFit.tight
y FlexFit.loose
es que suelta permitirá que su hijo tenga un tamaño máximo, mientras que la tensión lo fuerza a llenar todo el espacio disponible.
Maximum size
y Available space
significa lo mismo aquí?
Flexible.tight
obligará a los niños a ocupar todo el espacio disponible y Flexible.loose
dejará que los niños hagan lo que quieran. Algunos niños pueden ocupar todo el espacio y otros no, dependiendo de sus tipos.
Los widgets de Flexible son WRAP_CONTENT predeterminados, aunque puede cambiarlos mediante el parámetro Ajustar.
El widget en Expandido es MATCH_PARENT , puede cambiarlo usando flex .
Expanded
- es Flexible
con ajuste fijo
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
Puede usar Flexible para cambiar el tamaño de los widgets en filas y columnas . Se utiliza principalmente para ajustar el espacio de los diferentes widgets secundarios manteniendo la relación con sus widgets principales.
Mientras tanto, Expanded cambia las restricciones enviadas a los hijos de filas y columnas ; ayuda a llenar los espacios disponibles allí. Por lo tanto, cuando envuelve a su hijo en un widget expandido, llena los espacios vacíos.
Proporcionar estos videos del canal oficial de YouTube de Flutter solo para ayudar a las personas, que podrían buscar esto en el futuro próximo ...
Expanded () no es más que Flexible () con
Flexible (fit: FlexFit.tight) = Expanded()
pero, usos flexibles fit :FlexFit.loose
por defecto.
FlexFit.tight = Quiere ajustarse bien al padre ocupando tanto espacio como sea posible.
FlexFit.loose = Quiere encajar suelto en el padre ocupando el menor espacio posible para sí mismo.
La única diferencia si usa en Flexible
lugar de Expanded
, es que Flexible
permite que su hijo tenga el mismo ancho o menor que el Flexible
mismo, mientras que Expanded
obliga a su hijo a tener exactamente el mismo ancho de Expanded
. Pero ambos Expanded
e Flexible
ignoran el ancho de sus hijos cuando se dimensionan.
Row(children:[
Flexible(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
Flexible(
child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
]
)
Nota : esto significa que es imposible expandir los Row
niños proporcionalmente a sus tamaños. La fila usa el ancho exacto del niño o lo ignora por completo cuando usa Expanded
o Flexible
.
flex
factor. Consulte la documentación delExpanded
widget para obtener más información.