![](/img/trans.png)
[英]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.