可以在子级的onTap事件中添加一个回调函数,将事件传递给父级的onTap事件。具体实现方法如下:

  1. 在子级组件中添加一个回调函数属性,例如onChildTap:
class ChildWidget extends StatelessWidget {
  final VoidCallback onChildTap;
  
  ChildWidget({this.onChildTap});

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        // 子级组件的点击事件
        print('Child Widget Tapped');
        if (onChildTap != null) {
          onChildTap();
        }
      },
      child: Container(
        width: 100,
        height: 100,
        color: Colors.blue,
        child: Center(
          child: Text('Child Widget'),
        ),
      ),
    );
  }
}
  1. 在父级组件中,将子级组件的onChildTap回调函数传递给子级组件:
class ParentWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        // 父级组件的点击事件
        print('Parent Widget Tapped');
      },
      child: ChildWidget(
        onChildTap: () {
          // 子级组件的点击事件回调函数
          print('Child Widget Tapped Callback');
        },
      ),
    );
  }
}

这样,当子级组件被点击时,先执行子级组件的onTap事件,然后再执行父级组件的onTap事件。同时,子级组件的onChildTap回调函数也会被触发

flutter子级设置了onTap父级就没有办法触发onTap了如何让它们两个都触发

原文地址: https://www.cveoy.top/t/topic/c1h8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录