首页 > 解决方案 > 有没有办法使用颤振检测pdf中的触摸?

问题描述

我正在使用dart pdf 库,我想在查看 pdf 时检测屏幕上的触摸。有没有办法做到这一点?为了查看 pdf 文件,我使用PDFViewerScaffold带有创建文件路径的 a 。我尝试PDFViewerScaffoldListenerand包装GestureDetector,但没有运气。到目前为止我的代码:

查看pdf文件:

class PdfViewerPage extends StatelessWidget {
  final String path;
  const PdfViewerPage({Key key, this.path}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return PDFViewerScaffold(
          path: path,
    );
  }
}

制作pdf文件

final Document pdf = Document();

...

pdf.addPage(MultiPage(
      pageFormat:
      ...
      footer: (Context context) {
        ...
      },
      build: (Context context) => <Widget>[
        ...
...

任何帮助,将不胜感激!

标签: flutterpdfdart

解决方案


不久前我遇到了同样的问题,FlutterFullPdfViewer 使用本机组件并将其封装在只能通过本机代码操作的 FrameLayout(在 android 中)中。我所做的是我分叉了这个项目,并添加了我自己的实现。在 android 部分中,您有一个在 FlutterFullPdfViewerManager.java 中调用的方法:

void openPDF(String path) {
    File file = new File(path);
    pdfView.fromFile(file)
            .enableSwipe(true)
            .swipeHorizontal(false)
            .enableDoubletap(true)
            .defaultPage(0)
            .load();
}

您可以将其更改为:

void openPDF(String path) {
    File file = new File(path);
    pdfView.fromFile(file)
            .enableSwipe(true)
            .swipeHorizontal(false)
            .enableDoubletap(true)
            .onTap(e-> {
                if (e.getRawX() > 300) {//put your value here
                    //send rebuild instruction to flutter
                }
            .defaultPage(0)
            .load();
}

或者类似的事情,您还会发现您可以在 pdfView 上做很多额外的事情,这些事情可能对您有所帮助。


推荐阅读