我对颤振非常缺乏经验,我用下面的代码创建了一个小部件:
使用如下代码编写:(不调用ToolModify函数)
final VoidCallback ToolModify;
onTap: () {
// rest of the code
widget.ToolModify;
}, 相反,调用它的代码如下所示:
onTap: widget.ToolModify,有人能向我解释一下为什么会发生这种事吗?
由于我需要编写除widget.ToolModify之外的其他代码行;如何在OnTap内调用ToolModify函数:() {.}?
希望有人能帮我。谢谢:)
发布于 2022-04-19 23:23:12
这样的代码是完全合法和良好的风格:
onTap: widget.ToolModify,在本例中,widget.ToolModify表示一个函数,并将该函数分配给onTap,使onTap 稍后在上调用该函数。
如果您这样调用它,您将生成一个新的匿名和无参数函数() {},该函数只调用另一个函数widget.ToolModify()
onTap: () {
widget.ToolModify();
},注意,widget.ToolModify 表示函数本身为。而widget.ToolModify()调用不带参数的函数。
此外,您可以写这个,因为您只返回一个表达式()
onTap: () => widget.ToolModify(),示例
看看这个示例,它定义了一个函数ad(),它返回一个匿名函数,稍后将它应用于一些参数:
// This function takes one argument x and returns a new function
// of one parameter
Function(int) add( y ) {
return ( x ) => ( x + y );
}
// The above => notation is only applicable, if exactly one expression is returned
// In case the structure of the inner function is more complex, write
// it using non shorthand notation like so
Function(int) divideBy( y ) {
return ( x ) {
assert( y > 0 );
return ( x / y );
};
}
// Use the above function to create two specialist functions
Function(int) add100 = add( 100 );
// Simmilar, but implicitly typed
var add10 = add( 10 );
var halfOf = divideBy( 2 );
var doubleOf = divideBy( 0.2 );
// Now apply two specialized functions
print( add10( 1 ) );
print( add100( 1) );
print( halfOf( 10 ) );
print( doubleOf( 10 ) );产出如下:
11
101
5
50发布于 2022-04-19 19:52:54
您需要实际调用该方法:
onTap: () {
// rest of the code
widget.ToolModify(); // notice the brackets
},https://stackoverflow.com/questions/71930528
复制相似问题