多亏了开源的魔力,您不必猜测太多。
Container
基本上只是一个便利小部件,有时可以使您节省嵌套其他4个小部件的时间。如果您将宽度/高度传递给Container
:
constraints =
(width != null || height != null)
? constraints?.tighten(width: width, height: height)
?? @R_215_2419@Constraints.tightFor(width: width, height: height)
: constraints,
这将导致:
if (constraints != null)
current = Constrained@R_215_2419@(constraints: constraints, child: current);
实际上,Constrained@R_215_2419@与a几乎相同Sized@R_215_2419@
,只是更加灵活。
A Sized@R_215_2419@
会做:
@override
RenderConstrained@R_215_2419@ createRenderObject(BuildContext context) {
return RenderConstrained@R_215_2419@(
additionalConstraints: _additionalConstraints,
);
}
@R_215_2419@Constraints get _additionalConstraints {
return @R_215_2419@Constraints.tightFor(width: width, height: height);
}
即。实际上是一样的。如果仅Container
用于宽度/高度,则性能开销可能很小,可以忽略不计。但您肯定会无法测量。.但我仍然建议您这样做,Sized@R_215_2419@
因为它更清晰。恕我直言。