首页 > 解决方案 > 如何在 Flutter 的 AndroidView 或 UiKitView 中检测缩放和平移手势?

问题描述

我正在使用flutter_pdfview在我的 Flutter App 中显示 PDF。在底层,PDFView 小部件根据平台使用AndroidViewUiKitView 。
我想知道用户可以在 PDF 上缩放和平移,从而获得相对于 PDF 文档的点击事件的坐标。
为此,我需要订阅 scale 和 pan 事件,以了解文档的哪一部分当前显示在屏幕上。然后我可以弄清楚用户点击的确切位置。

我试过通过我自己的ScaleGestureRecognizerand PanGestureRecognizer。不幸的是,onUpdate(),onStart()似乎从未被触发。

这是我的代码:

class PDFViewer extends StatelessWidget {
  PDFViewer({this.filePath});

  final String filePath;

  @override
  Widget build(BuildContext context) {
    final scale = ScaleGestureRecognizer()
      ..onUpdate = (details) {
        print(details.scale);
      };
    final pan = PanGestureRecognizer()
      ..onUpdate = (details) {
        print(details.delta);
      }
      ..onStart = (_) {
        print('Start pan');
      }
      ..onEnd = (_) {
        print('End pan');
      };

    return PDFView(
      filePath: filePath,
      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{
        Factory<ScaleGestureRecognizer>(() => scale),
        Factory<PanGestureRecognizer>(() => pan),
      },
    );
  }
}

标签: flutteruikitandroid-viewgesture

解决方案


推荐阅读