簡體   English   中英

Flutter 應該從父列/行中排除單個小部件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM