
[英]Flutter: Controlling the states of multiple child widgets from a single parent widget
[英]Flutter should single widget be excluded from parent column/row
我有一个自定义小部件,90% 的时间只有一个小部件,但根据某些条件,它可以是 2 个或 3 个,应该垂直放置。
@override
Widget build(BuildContext context)
{
List<Widget> children = [];
// Main widget
children.add(widget.child);
// Condition
if (condition1)
children.add(otherWidget);
// Condition
if (condition2)
children.add(anotherWidget);
return Column(children: children);
}
由于 90% 的时间它只是一个小部件,我应该删除该列吗?
return children.length > 1 ? Column(children: children) : children.first;
我在任何地方都没有看到这种逻辑。 更常见的是保留column
并使用其中的条件:
@override
Widget build(BuildContext context)
{
return Column(children: [
widget.child,
if (condition1)
otherWidget,
if (condition2)
anotherWidget,
]);
}
我更喜欢后者,但我是否应该担心很可能会有不必要的专栏构建这一事实?
(顺便说一句,这个小部件是一个ListView
的示例子项,它有很多子项,并且在其中会有有状态的小部件需要保留它们的 state。)
我建议您使用包裹在可见性小部件内的 Column 和小部件(这样如果不需要,您不需要额外的小部件)
Column(
children: [
child,
Visibility(
visible: condition,
child: anotherWidget,
)
Visibility(
visible: condition,
child: anotherWidget,
)
]
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.