控件属性的颤振匿名/内联函数

时间:2020-07-10 13:04:08

标签: dart inline-functions

我对飞镖和扑打是陌生的,我试图使用内联函数返回一个值。

SizedBox(
  height: _getheight()
),

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

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

SizedBox(
 height: (){return 20.0;} as double
),

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

1 个答案:

答案 0 :(得分:0)

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

在第二个示例中,您试图为height提供一个函数作为参数(键入为double Function()),因为自定义height接受double以来,该函数是不允许的

您可以这样做:

SizedBox(
height: (){return 20.0;}()
),

将执行该方法(请参见最后的()),并将返回值用作height的参数。