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

flutter anonymous / inline functions for widget properties

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

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
),

--构建但在运行时失败 错误:type '() => double' 不是类型 cast

中类型 'double' 的子类型

height 正在采用 double 类型的值。在您的第一个示例中,您正在执行 _getheight() 然后将此执行的结果作为名为 height.

的参数给出

在你的第二个例子中,你试图给 height 一个函数作为参数(输入为 double Function())这是不允许的,因为 height 被定义为采用 double.

然后你可以这样做:

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

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