我的主页面中有一个Container
,它将带有回调函数onBookPlace
的小部件PageView
用作子部件。
Container(
child: PageView(
onBookPlace: onBookPlace(
dateStart, dateEnd
),
),
)
在我的PageView
中,我有函数onBookPlace
,当我按下onTap
时应该调用它
class PageView extends StatelessWidget {
final VoidCallback onBookPlace;
const PageView({Key key,this.onBookPlace})
: super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap:() {onBookPlace()},
);}}
但这里的问题是,在我点击GestureDetector
小部件之前,我的函数就被调用了。这是关于PageView
的构建。
如何解决此问题?我的意思是,只有当我单击GestureDetector
小部件时,才应该调用回调。
谢谢
我认为应该将引用传递给函数,而不是立即调用它。所以你可能应该删除()
Container(
child: PageView1(onBookPlace: onBookPlace)
)
编辑:如果您想通过函数传递一些参数,那么您可以创建另一个函数作为回调传递。例如,您可以使用匿名函数。
Container(
child: PageView1(onBookPlace: () => onBookPlace(dateStart, dateEnd))
)
基本思想是,当你想传递回调函数时,你想传递函数本身,而不是它的结果。通过在那里放括号,您可以调用函数并传递其结果,而不是传递对处理程序函数的引用。