从匿名函数返回值

时间:2019-12-02 15:35:57

标签: flutter dart

当我使用匿名功能时。

它显示了编译错误,

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()?

2 个答案:

答案 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
相关问题