flutter 使用GestureDetector扩展抖动小部件

z8dt9xmd  于 2023-01-31  发布在  Flutter
关注(0)|答案(1)|浏览(159)

我正在尝试将我的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没有触发:点击目的地不会在控制台中打印“这不是打印!”。
如何正确地实现这一点?

tcomlyy6

tcomlyy61#

还有其他的情况下,像这样的点击事件赢得了内部事件。
在这种情况下,可以使用onPanDown来克服这种情况。

return GestureDetector(
    onPanDown:(_)=> onTap(),

相关问题