onPressed属性后面的空括号在Dart中是什么意思?
我知道在小部件的onPressed属性后面的空括号在Dart中是什么意思?,dart,flutter,Dart,Flutter,我知道在小部件的onPressed和onTap之后调用函数的语法。有两个选项可以使用()=>function()或(){function();}语法。空括号是什么意思?=>(胖箭头)语法对于包含单个语句的函数非常方便。此语法在将匿名函数作为参数传递时特别有用。我已经学会了先将空括号视为构建,然后使用返回值执行此函数 我使用您发布的第二种方法遇到了一个问题,其中flutter将崩溃,声明“无法构建,因为框架已经在构建”,并在StackOverflow上找到了这篇文章,这可能会让您更好地理解它的含义
onPressed
和onTap
之后调用函数的语法。有两个选项可以使用()=>function()
或(){function();}
语法。空括号是什么意思?=>(胖箭头)语法对于包含单个语句的函数非常方便。此语法在将匿名函数作为参数传递时特别有用。我已经学会了先将空括号视为构建,然后使用返回值执行此函数
我使用您发布的第二种方法遇到了一个问题,其中flutter将崩溃,声明“无法构建,因为框架已经在构建”,并在StackOverflow上找到了这篇文章,这可能会让您更好地理解它的含义。
它们不是一回事。 根据语言文档,胖箭头是return语句的语法糖 与这条线相当
(){ return function(); }
不是这句话
() { function(); } //returns void
我猜你侥幸逃脱了,因为两个处理者都有一种空虚的倾向
void main(){
num add(a,b)=>a+b;
num add_void(a,b){a+b;}
对于(int i=0;i<5;i++){
打印('hello${i+1}');
打印(添加(i,i));
打印(添加(i,i));
}
}
()=>表达式
或(){statements}
创建闭包或内联函数
通过这种方式,您可以创建一个内联函数,该函数作为参数传递,以便在事件onPressed
被传递给的小部件时调用
表达式
或语句
具有创建它们的上下文,并且可以访问和使用该上下文中可用的所有成员和标识符(变量、方法、函数、typedef等)
如果你使用
传递对现有函数的引用。onPressed:myFunction
这仅在
和onPressed
预期的回调参数兼容时才有效myFunction
onPressed:myFunction()
被执行,返回的结果被传递给myFunction()
。这是一个常见的错误,如果无意中这样做,实际上是为了传递对onPressed
的引用,而不是调用它myFunction
函数
作为参数的函数。可能的值可以是
func callbackFunction() {
// what ever we want to do onTap
}
1. onTap: callbackFunction
2. onTap: () => callbackFunction() // onTap: callbackFunction() it will invoke the method while building itself.
// So we are making it lazy by wrapping in another anonymous function.
3. onTap: () { callbackFunction(); }
4. onTap: () => print("tapped") // anonymous one line function
5. onTap: () { print("tapped");
// what ever we want to do onTap
print("tapped");
} // anonymous multiline function
您可以使用
onTap:function
too您能解释一下onPressed:myFunction和onPressed:myFunction()之间的区别吗?我现在还赶不上。谢谢你,只有一点不同onPressed:myFunction
将指向函数myFunction
的引用(指针)传递给onPressed
参数。附加的()
会执行myFunction
,并将myFunction()
的返回值传递给onPressed
,这通常不是您想要的。感谢@GünterZöchbauer在这么多SOF问题上的帮助!onTap:callbackFunction和onTap:()=>callbackFunction()之间有什么区别?没有区别,使用这两种方法您将创建“callbackFunction”(参数类型函数)
void main() {
num add(a,b) => a + b;
num add_void(a,b) { a+b; }
for (int i = 0; i < 5; i++) {
print('hello ${i + 1}');
print(add(i,i));
print(add_void(i,i));
}
}
func callbackFunction() {
// what ever we want to do onTap
}
1. onTap: callbackFunction
2. onTap: () => callbackFunction() // onTap: callbackFunction() it will invoke the method while building itself.
// So we are making it lazy by wrapping in another anonymous function.
3. onTap: () { callbackFunction(); }
4. onTap: () => print("tapped") // anonymous one line function
5. onTap: () { print("tapped");
// what ever we want to do onTap
print("tapped");
} // anonymous multiline function