用于小部件属性的 flutter 匿名/内联函数

rya*_*an 4 inline-functions dart

我是 dart 和 flutter 的新手,我正在尝试使用内联函数返回一个值。

SizedBox(
  height: _getheight()
),

double _getheight(){
//do some stuff
return 20.0;
}
//WORKS
Run Code Online (Sandbox Code Playgroud)
SizedBox(
height: (){return 20.0;}
),
//(Won't build)
Run Code Online (Sandbox Code Playgroud)

错误:参数类型“double Function()”无法分配给参数类型“double”。

SizedBox(
 height: (){return 20.0;} as double
),
Run Code Online (Sandbox Code Playgroud)

--构建但在运行时失败错误:类型 '() => double' 不是类型转换中类型 'double' 的子类型

jul*_*101 6

height正在获取类型的值double。在第一个示例中,您正在执行_getheight(),然后将此执行的结果作为名为 的参数给出height

在第二个示例中,您尝试给出height一个函数作为参数(类型为double Function()),这是不允许的,因为height被定义为采用double.

然后你可以这样做:

SizedBox(
height: (){return 20.0;}()
),
Run Code Online (Sandbox Code Playgroud)

它将执行该方法(请参阅最后一个())并使用返回值作为 的参数height