我是编程新手。我的问题是为什么当我使用参数时,这个函数没有被调用?
String _gesture = 'No Gesture Detected';
_printgesture(var gestureName) {
setState(() {
_gesture = gestureName;
print("PRINTGESTURE FUNCTION CALLED");
});
}
InkWell(
onTap: _printgesture('Tap Detected'),
// onTap: () {
// _printgesture('Tap Detected');
// },
child: Icon(Icons.dangerous_rounded, size: 300),
),
我把它写在匿名函数里面,虽然它工作了,但我还是想知道为什么它会自动运行。
3条答案
按热度按时间q9rjltbz1#
变更
到
由于onTap是GestureTapCallback函数类型,当在
onTap: _printgesture('Tap Detected'),
上使用时,您将直接执行printgesture('Tap Detected')
,而无需等待点击函数被按下。因此,当您将其更改为(){_printgesture('Tap Detected')
时,该函数将仅在点击时被调用。参考:https://api.flutter.dev/flutter/gestures/GestureTapCallback.html
z9smfwbn2#
尝试将其替换为onTap函数
kkbh8khc3#
当你写作的时候
你马上执行
_printgesture
,并把这个函数的结果放到onTap
参数中,顺便说一下,这个参数是null
,这会导致onTap
根本不起作用.我真的很惊讶它能编译,但那是因为你没有为
_printgesture
定义一个返回类型,如果你正确地将它定义为void _printgesture(var gestureName) {
,你会发现你的代码甚至不能编译。