搜尋套件、儲存庫與 APP 分類

套件詳情v0.2.0

disable_screenshots

提供三個禁用截圖的相關功能。分別是:截圖監控、全域加入水印、禁用截圖(僅支援Android)。

AndroidiOS
近 30 天下載
61
喜歡數
33
Pub 分數
115

安裝套件

flutter pub add disable_screenshots

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

disable_screenshots 套件提供三個函數,透過防止未經授權的截圖來增強應用程式安全性。它支援截圖監控以偵測是否已截圖,允許加入全域水印以阻止分享,並在 Android 裝置上停用截圖功能。雖然列出支援 iOS,但實際上停用截圖的功能僅限於 Android。此套件可透過 Flutter Pub 容易地整合,適用於處理敏感內容的應用程式。其功能設計旨在高安全性情境下保護使用者隱私與資料完整性。

適用情境

  • 保護敏感的應用內容
  • 保護金融或醫療保健應用程式
  • 防止未經授權的螢幕分享
  • 增強數位版權管理
  • 監控截圖嘗試

主要特色

  • 截圖監控
  • 全域水印疊加
  • 僅限 Android 的截圖禁用
  • Flutter 的簡單整合
  • 注重隱私的設計

適合對象

  • 包含機密資料的應用程式
  • 帶有版權材料的教育平台
  • 安全的銀行或企業應用
  • 數位媒體的內容保護
  • 注重用戶隱私的開發團隊

使用建議

  • 無 iOS 螢幕截圖停用功能
  • 水印可能影響UI美學
  • 需要 Android 特定權限
  • 僅限 Android 平台以實現完整的截圖阻擋
  • 如果過度使用,可能會影響使用者體驗

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

disable_screenshots

在Flutter开发中,有时我们需要对App的内容进行管控,避免敏感信息暴露,所以开发了这个插件。此插件提供三个禁用截屏的相关功能,分别是:截屏监控行为、全局添加水印、禁用截屏(仅支持Android)。

Getting Started

Add dependency
dependencies:
  disable_screenshots: 0.0.1 #latest version
功能演示

demo_gif

使用样例
class RootApp extends StatefulWidget {
  @override
  _RootAppState createState() => _RootAppState();
}

class _RootAppState extends State<RootApp> {
  // 初始化插件
  DisableScreenshots _plugin = DisableScreenshots();
  // 监控截屏行为的stream
  StreamSubscription<void> _screenshotsSubscription;
  int _screenshotsCount = 0;
  bool _disableScreenshots = false;

  @override
  void initState() {
    super.initState();
    _screenshotsSubscription = _plugin.onScreenShots.listen((event) {
      // 监控到截屏行为会回调到这里
      setState(() {
        _screenshotsCount++;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('禁止截屏'),
      ),
      body: Column(
        children: <Widget>[
          Center(
            child: Text("监控到截屏次数:$_screenshotsCount"),
          ),
          Center(
            child: Text(_disableScreenshots ? "禁止截屏状态" : "允许截屏状态"),
          ),
          RaisedButton(
              onPressed: () {
                // 添加默认样式的水印
                _plugin.addWatermark(context, "默认水印",
                    rowCount: 4, columnCount: 8);
              },
              child: Text("添加默认水印")),
          RaisedButton(
              onPressed: () {
                // 添加自定义widget当做水印
                _plugin.addCustomWatermark(context,
                    Watarmark(rowCount: 3, columnCount: 10, text: "自定义水印"));
              },
              child: Text("添加自定义水印")),
          RaisedButton(
              onPressed: () {
                // 移除水印
                _plugin.removeWatermark();
              },
              child: Text("删除水印")),
          RaisedButton(
              onPressed: () async {
                bool flag = !_disableScreenshots;
                // 禁用或允许截屏(只支持iOS)
                await _plugin.disableScreenshots(flag);
                setState(() {
                  _disableScreenshots = flag;
                });
              },
              child: Text(_disableScreenshots ? "允许截屏(仅android适用)" : "禁用截屏(仅android适用)")),
          RaisedButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                    builder: (_) => Scaffold(
                          appBar: AppBar(
                            title: Text("我是新页面"),
                          ),
                          body: Center(child: Text("new page")),
                        )));
              },
              child: Text("进入新页面"))
        ],
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    //取消截屏监控可以调用cancel()方法
    if (_screenshotsSubscription != null) {
      _screenshotsSubscription.cancel();
    }
  }
}
已知问题
  1. 在老的flutter项目中,在iOS平台运行可能出现编译问题无法运行。这个是由于老的flutter项目里面没有使用到swift,所以没有briging文件,但是插件使用了swift,所以会编译失败,这种情况直接使用xcode在iOS项目中创建一个swift文件,会自动生成briding文件。
  2. 在某些安卓设备上(华为P30、Mi 10、三星Note10、OPPO reno3 Pro等),存在不能捕获截屏事件的问题,如果大家有解决方案,请提交pull request,谢谢!
其它

此Plugin的创建流程,可以参考博文如何创建一个Flutter Plugin

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。