Flexible ocupa solo el espacio necesario y Expanded ocupa todo el espacio disponible, respetando el flexfactor. Consulte la documentación del Expandedwidget para obtener más información.
Aleksandar
99
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 Flexibleover Expandedcuando desee un fitdiseño diferente , útil en algunos diseños receptivos.
La diferencia entre FlexFit.tighty FlexFit.loosees 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.
no Maximum sizey Available spacesignifica lo mismo aquí?
CopsOnRoad
No, por tamaño máximo me refiero a algo como tener como hijo de Flexible un ConstrainedBox con un maxHeight dentro de una columna
Rémi Rousselet
25
En palabras sencillas, Flexible.tightobligará a los niños a ocupar todo el espacio disponible y Flexible.loosedejará que los niños hagan lo que quieran. Algunos niños pueden ocupar todo el espacio y otros no, dependiendo de sus tipos.
CopsOnRoad
30
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 .
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 ...
La única diferencia si usa en Flexiblelugar de Expanded, es que Flexiblepermite que su hijo tenga el mismo ancho o menor que el Flexiblemismo, mientras que Expandedobliga a su hijo a tener exactamente el mismo ancho de Expanded. Pero ambos Expandede Flexibleignoran 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 Rowniños proporcionalmente a sus tamaños. La fila usa el ancho exacto del niño o lo ignora por completo cuando usa Expandedo Flexible.
flex
factor. Consulte la documentación delExpanded
widget para obtener más información.Expanded
es solo una abreviatura deFlexible
Usando expandido de esta manera:
es estrictamente equivalente a:
Es posible que desee utilizar
Flexible
overExpanded
cuando desee unfit
diseño diferente , útil en algunos diseños receptivos.La diferencia entre
FlexFit.tight
yFlexFit.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.fuente
Maximum size
yAvailable space
significa lo mismo aquí?Flexible.tight
obligará a los niños a ocupar todo el espacio disponible yFlexible.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 .
fuente
Expanded
- esFlexible
con ajuste fijoclass Expanded extends Flexible { const Expanded({ Key key, int flex = 1, @required Widget child, }) : super( key: key, flex: flex, fit: FlexFit.tight, child: child ); }
fuente
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 ...
Expandido:
Flexible:
fuente
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.
fuente
La única diferencia si usa en
Flexible
lugar deExpanded
, es queFlexible
permite que su hijo tenga el mismo ancho o menor que elFlexible
mismo, mientras queExpanded
obliga a su hijo a tener exactamente el mismo ancho deExpanded
. Pero ambosExpanded
eFlexible
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 usaExpanded
oFlexible
.fuente