You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何在选中特定文本时隐藏SfPdfViewer的上下文菜单?

隐藏SfPdfViewer默认上下文菜单的解决方案

1. 全局隐藏默认菜单

直接通过contextMenuBuilder属性返回null,就能彻底禁用SfPdfViewer的默认上下文菜单,无论是否选中文本都不会弹出:

SfPdfViewer.network(
  'https://example.com/sample.pdf',
  contextMenuBuilder: (context, pdfViewerContext) {
    return null;
  },
)

2. 仅选中特定文本时隐藏菜单

如果需要针对特定选中内容控制菜单显示,可以结合onTextSelectionChanged回调和contextMenuBuilder实现:

首先在State类中定义变量保存选中文本:

String? _selectedText;

然后配置SfPdfViewer:

SfPdfViewer.network(
  'https://example.com/sample.pdf',
  onTextSelectionChanged: (details) {
    setState(() {
      _selectedText = details.selectedText;
    });
  },
  contextMenuBuilder: (context, pdfViewerContext) {
    // 判断选中文本是否符合隐藏条件
    if (_selectedText != null && _selectedText!.contains('你的特定文本')) {
      return null; // 不显示菜单
    }
    // 其他情况返回默认菜单
    return SfPdfViewerContextMenu(
      context: context,
      pdfViewerContext: pdfViewerContext,
    );
  },
)

如果你的需求是彻底禁止文本选择,也可以直接设置enableTextSelection: false,但这样用户无法选中任何文本,根据实际场景选择即可。

内容的提问来源于stack exchange,提问作者Reyhan Akta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:06:06