我想在我的 Flutter 应用程序的屏幕上显示教程叠加层。我什至找到了一个很好的候选人,它几乎可以满足我的要求:那就是 https://pub.dev/packages/overlay_tutorial/ 插件。用户按下屏幕上的帮助按钮,覆盖层就会弹出,并带有剪切图。虽然我不希望任何东西收到点击 (https://github.com/TabooSun/overlay_tutorial/issues/26),但是如果用户点击屏幕上的任何地方,叠加层就会消失。
我尝试使用 AbsorbPointer 并且它成功拦截了点击,并且不再有点击和叠加层下方发生的事情。查看我的叉子:https://github.com/CsabaConsulting/overlay_tutorial/commit/9d809d51bcf55b9c8044d07d151c696bdb55abe6 但是现在也无法点击覆盖层。
@override
Widget build(BuildContext context) {
return Stack(
children: [
AbsorbPointer(
absorbing: widget.enabled && widget.absorbPointer,ignoringSemantics: true,child: _OverlayTutorialBackbone(
overlayColor: widget.overlayColor,enabled: widget.enabled,overlayTutorialHoles: _overlayTutorialHoles,onEntryRectCalculated: () {
_updateChildren();
},child: widget.child,),if (widget.enabled) ...[
..._overlayTutorialHoles.entries
.map((entry) {
我需要的是 AbsorbPointer 的 onTap 或 onClick 处理程序。我可以将东西包装到 GestureDetector 中,但这会一直拦截点击和手势。这里有什么好的解决方案?