当我使用匿名功能时。
它显示了编译错误,
Error: A value of type 'Text Function()' can't be assigned to a variable of type 'Widget'.
Widget cols = Column(
children: <Widget>[
((){
if (myFlg){
return Text("OK");
}else {
return Text("No");
}
}),
Text("left"),
Text("Right")
]
);
好的,我明白了。
它返回函数本身,而不是Text()
小部件。
但是,在这种情况下,如何从匿名函数返回Text()?
答案 0 :(得分:2)
您的代码几乎可以正常工作。您忘记执行功能了:
(() {
if (myFlg) {
return Text("OK");
} else {
return Text("No");
}
})(),
请注意,您实际上可以将if语句放入集合中,因此在此示例中,您可以避免使用匿名函数并执行以下操作:
Widget cols = Column(
children: <Widget>[
if (myFlg) Text("OK") else Text("No"),
Text("left"),
Text("Right")
]
);
答案 1 :(得分:2)
在Dart中执行函数关闭的操作如下。
function_closure()
因此,您应该在函数关闭后添加“()”。
示例:
void main() {
print(() {
return 41;
});
print(() {
return 41;
}());
}
结果:
Closure: () => int 41