在第二个页面中执行回调函数之前调用了该函数



我的主页面中有一个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))
)

基本思想是,当你想传递回调函数时,你想传递函数本身,而不是它的结果。通过在那里放括号,您可以调用函数并传递其结果,而不是传递对处理程序函数的引用。

最新更新