我正在尝试将我的Drawer
更新为使用NavigationDrawerDestination
小工具的NavigationDrawer
。然而,我对NavigationDrawerDestinaion
没有回调函数的事实感到非常不满。onDestinationSelected
函数只接受目的地的索引,没有其他东西来处理点击。在我的抽屉里,这很麻烦,因为对于一些用户来说,目的地的数量和顺序是不同的。
我不能直接将NavigationDrawerDestination
Package 在GestureDetector
中,因为Flutter期望NavigationDrawerDestination
的父对象是NavigationDrawer
,因此,我尝试通过创建SidebarDestination
来扩展小部件,如下所示:
class SidebarDestination extends NavigationDrawerDestination {
const SidebarDestination({
super.key,
required super.icon,
required super.label,
super.selectedIcon,
required this.onTap,
});
final void Function() onTap;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: super.build(context),
);
}
}
this DartPad中提供了一个完整的代码示例。这不再从框架中引发错误。但是,我的扩展部件中的GestureDetector没有触发:点击目的地不会在控制台中打印“这不是打印!”。
如何正确地实现这一点?
1条答案
按热度按时间tcomlyy61#
还有其他的情况下,像这样的点击事件赢得了内部事件。
在这种情况下,可以使用
onPanDown
来克服这种情况。