Flutter - 函数被称为 OnTap: 但不是与 Ontap () {...}
Flutter - Function is called OnTap: but not with Ontap () {...}
我对 Flutter 很陌生,我用这段代码创建了一个小部件:
代码如下:(未调用ToolModify函数)
final VoidCallback ToolModify;
onTap: () {
// rest of the code
widget.ToolModify;
},
而是使用如下代码调用它:
onTap: widget.ToolModify,
任何人都可以向我解释为什么会这样吗?
因为除了widget.ToolModify我还需要写其他几行代码;我如何在 OnTap 中调用 ToolModify 函数: () {...} ??
希望有人能帮助我。谢谢:)
您需要实际调用该方法:
onTap: () {
// rest of the code
widget.ToolModify(); // notice the brackets
},
像这样编码是完全合法且良好的风格:
onTap: widget.ToolModify,
在这种情况下,widget.ToolModify
表示一个函数,您将函数分配给 onTap
以使 onTap
稍后调用该函数 .
如果你这样调用它,你会创建一个新的匿名和无参数函数 () {}
,它只调用另一个函数 widget.ToolModify()
:
onTap: () {
widget.ToolModify();
},
请注意,widget.ToolModify
表示函数本身。而 widget.ToolModify()
调用不带参数的函数。
此外,你可以这样写,因为你return 只是一个表达式:
onTap: () => widget.ToolModify(),
例子
查看此示例,它定义了一个 函数 ad(),return 是一个匿名函数,稍后将其应用于某些参数:
// 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
我对 Flutter 很陌生,我用这段代码创建了一个小部件:
代码如下:(未调用ToolModify函数)
final VoidCallback ToolModify;
onTap: () {
// rest of the code
widget.ToolModify;
},
而是使用如下代码调用它:
onTap: widget.ToolModify,
任何人都可以向我解释为什么会这样吗?
因为除了widget.ToolModify我还需要写其他几行代码;我如何在 OnTap 中调用 ToolModify 函数: () {...} ??
希望有人能帮助我。谢谢:)
您需要实际调用该方法:
onTap: () {
// rest of the code
widget.ToolModify(); // notice the brackets
},
像这样编码是完全合法且良好的风格:
onTap: widget.ToolModify,
在这种情况下,widget.ToolModify
表示一个函数,您将函数分配给 onTap
以使 onTap
稍后调用该函数 .
如果你这样调用它,你会创建一个新的匿名和无参数函数 () {}
,它只调用另一个函数 widget.ToolModify()
:
onTap: () {
widget.ToolModify();
},
请注意,widget.ToolModify
表示函数本身。而 widget.ToolModify()
调用不带参数的函数。
此外,你可以这样写,因为你return 只是一个表达式:
onTap: () => widget.ToolModify(),
例子
查看此示例,它定义了一个 函数 ad(),return 是一个匿名函数,稍后将其应用于某些参数:
// 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