Solución:
Gracias a la magia del código abierto, no tienes que adivinar demasiado.
Container
es básicamente un widget de conveniencia que a veces le permite anidar otros 4 widgets. Si pasa ancho / alto en el Container
:
constraints =
(width != null || height != null)
? constraints?.tighten(width: width, height: height)
?? BoxConstraints.tightFor(width: width, height: height)
: constraints,
Lo que resultará en:
if (constraints != null)
current = ConstrainedBox(constraints: constraints, child: current);
Y el efecto de ConstrainedBox es más o menos lo mismo que un SizedBox
, simplemente más flexible.
A SizedBox
servirá:
@override
RenderConstrainedBox createRenderObject(BuildContext context) {
return RenderConstrainedBox(
additionalConstraints: _additionalConstraints,
);
}
BoxConstraints get _additionalConstraints {
return BoxConstraints.tightFor(width: width, height: height);
}
es decir. Efectivamente es lo mismo. Si solo usa Container
para el ancho / alto, puede haber una sobrecarga de rendimiento insignificante muy pequeña. pero seguramente no podrá medirlo. Pero aún así recomendaría SizedBox
porque es mucho más claro. En mi humilde opinión.
Me gustaria agregar eso SizedBox
no solo es más simple, sino que también se puede hacer const
, tiempo Container
no poder. Esto puede ser algo que necesite o no.
Si necesita una caja con un color que no puede usar SizedBox
. Pero https://pub.dev/packages/assorted_layout_widgets tiene el Box
widget, que es algo entre un SizedBox
y un Container
: Puedes tener color y se puede hacer const
. Tenga en cuenta que soy el autor de este paquete.