[英]Why do Flutter Widgets like Column() not require `.children`
您可以在编译器没有任何错误的情况下返回Column()
似乎真的不对。 什么是没有子级的列?
在内部,它默认为children: const []
。
有谁知道这里的理由是什么? 似乎它阻止编译器指出一些非常明显的错误,并且还会吞下您不打算成为 null 的 null 值。
一列在Flutter代码中有一个默认大小,即0。如果添加了一个小部件,则大小会发生变化,以便小部件适合。此外,children:[]只是一个列表,如果它为空,则没有小部件将显示。 ¯_(ツ)_/¯
这是顺便说一句。 class 列:
class Column extends Flex {
/// Creates a vertical array of children.
///
/// The [mainAxisAlignment], [mainAxisSize], [crossAxisAlignment], and
/// [verticalDirection] arguments must not be null.
/// If [crossAxisAlignment] is [CrossAxisAlignment.baseline], then
/// [textBaseline] must not be null.
///
/// The [textDirection] argument defaults to the ambient [Directionality], if
/// any. If there is no ambient directionality, and a text direction is going
/// to be necessary to disambiguate `start` or `end` values for the
/// [crossAxisAlignment], the [textDirection] must not be null.
Column({
Key? key,
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
MainAxisSize mainAxisSize = MainAxisSize.max,
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
TextDirection? textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline? textBaseline,
List<Widget> children = const <Widget>[],
}) : super(
children: children,
key: key,
direction: Axis.vertical,
mainAxisAlignment: mainAxisAlignment,
mainAxisSize: mainAxisSize,
crossAxisAlignment: crossAxisAlignment,
textDirection: textDirection,
verticalDirection: verticalDirection,
textBaseline: textBaseline,
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.