Saltar al contenido

Flutter: SizedBox Vs Container, ¿por qué usar uno en lugar del otro?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *