我第一次看到颤振中的回调,我不明白它们是如何实现的。我有一个回调,它将传递给它的所有内容打印到控制台
onDelete(dynamic val) {
print(val);
}
我将它传递给小部件
trailing: PopMenuWidget(
onDelete: onDelete(item),
)),
创建 PopMenuWidget 时,会onDelete自动触发回调。并且连续几次。国内这种行为并没有什么特别可怕的,但是我的回调是正常的,但是如果我将 setState() 传递给它,那么小部件会在创建时崩溃error setState() or markNeedsBuild called during build。
将回调传递给小部件时,您必须指定指向现有函数的链接,或者“就地”定义它,例如:
在你的情况下,执行函数本身的结果被传递,只有当函数返回另一个函数时才允许这样做。