我有一个空间,我可以在那里显示widget1或widget2(不能同时显示)。怎么做?事实上,widget1包含一个简单的检索信息的示例和一个切换到显示widget2(包含更多信息)的按钮。我想到的唯一解决方案是使用Column(children: [widget1, widget2])并调整两个小部件的可见性,但这很难看,例如,没有指示Column和Row哪个更好。
Column(children: [widget1, widget2])
Column
Row
iezvtpos1#
为此,您有多个选项:(1)您可以在列/小部件中使用条件spread operator
spread operator
Column( children: [ if (yourCondition == true) ...[ const Text("Widget 1") ] else ...[ const Text("Widget 2") ], ], ),
(2)您可以在列/小部件内使用ternary operator
ternary operator
Column( children: [ yourCondition == true ? const Text("Widget 1") : const Text("Widget 2"), ], ),
(3)您可以在列/小部件内使用Visibility小部件
Visibility
Column( children: [ Visibility( visible: yourCondition == true, child: const Text("Widget 1"), ), Visibility( visible: yourCondition == false, child: const Text("Widget 2"), ), ], ),
only one condition or non-nested conditions
multiple conditions or nested conditions
not recommended
zc0qhyus2#
要简单地解决这个问题,可以对容器(或任何具有单个子容器的容器)这样的小部件使用三元运算符:
Container( child: condition == true ? Text("Widget 1") : Text("Widget 2") )
2条答案
按热度按时间iezvtpos1#
为此,您有多个选项:
(1)您可以在列/小部件中使用条件
spread operator
(2)您可以在列/小部件内使用
ternary operator
(3)您可以在列/小部件内使用
Visibility
小部件only one condition or non-nested conditions
,请使用ternary operator
multiple conditions or nested conditions
,请使用条件spread operator
Visibility
小部件(但使用not recommended
)zc0qhyus2#
要简单地解决这个问题,可以对容器(或任何具有单个子容器的容器)这样的小部件使用三元运算符: