通常,我只想根据条件绘制一个Widget。
例如,我可能正在创建一个显示FadeIn.image的组件,但该图像:可能未在CMS中设置。在这种情况下,我想忽略绘制FadeIn.image,而只返回一个空容器。
我已经完成了背景
child: (someValue == null) ? new Container() : new LabelComponent(label: myStringLabel)
但是这中断了热装,我需要替换为, 子级:_createLabelComponent(myStringLabel),
Widget _createLabelComponent(String label)
{
if(label == null) {
return new Container();
} else {
return new LabelComponent(label: label)
}
}
以下设备可以安全工作并且不会中断热装吗?目前它似乎可以运行,但是在我用此小部件替换所有条件之前,我需要更多反馈。
class ConditionalWidget extends StatefulWidget {
final bool condition;
final Widget conditionalWidget;
ConditionalWidget(this.condition, this.conditionalWidget, {Key key});
@override
State createState() => new ConditionalWidgetState();
}
class ConditionalWidgetState extends State<ConditionalWidget> {
ConditionalWidgetState();
@override
void initState()
{
super.initState();
}
@override
Widget build(BuildContext context)
{
if(widget.condition) {
return widget.conditionalWidget;
} else {
return new Container();
}
}
}
答案 0 :(得分:0)
这里没什么神奇的,child
是Container
类的属性:
可以使用任何表达式返回child
属性的小部件,当然也可以使用条件表达式
condition ? expr1 : expr2
。
如果热加载失败,请检查其他原因。
例如,破坏热重装的代码:
child: (someValue == null) ? new Container() : new LabelComponent(label: myStringLabel)
使用someValue
和myStringLabel
,而在_createLabelComponent
中只有一个label
变量。