Flutter TextFiled频繁采集“剪切板信息”

在使用Flutter开发者,输入框是必不可少的功能,最近产品出了需要,要求输入框记住用户登录过的手机号,并在输入框输入时提示出来,这是个很基础的功能,但是在通过测试验收发布到应用市场时,被Vivo拒了,具体报错信息如下:

APP在运行时,SDK存在以下违规行为: 1、未见向用户告知且未经用户同意,f2prateek dart存在频繁采集"剪切板信息"的行为,非服务所必须且无合理应用场景,超出实现产品或服务的业务功能 所必须的最低频率

查看代码后发现就是一个很普通的tetFiled,没有其他特殊的,先做排除

  1. 是否跟焦点有关
  2. 是否需要在组件上做特殊设置

把组件主动获取焦点的 autoFocus 设置为false,提交到VIVO的做隐私合规检测,发现依然没有通过,还是这个问题。没办法去看源码(Flutter3.7.10),发现有一个函数:copySelection

Dart 复制代码
 /// Copy current selection to [Clipboard].
  @override
  void copySelection(SelectionChangedCause cause) {
    final TextSelection selection = textEditingValue.selection;
    assert(selection != null);
    if (selection.isCollapsed || widget.obscureText) {
      return;
    }
    final String text = textEditingValue.text;
    Clipboard.setData(ClipboardData(text: selection.textInside(text)));
    if (cause == SelectionChangedCause.toolbar) {
      bringIntoView(textEditingValue.selection.extent);
      hideToolbar(false);

      switch (defaultTargetPlatform) {
        case TargetPlatform.iOS:
        case TargetPlatform.macOS:
        case TargetPlatform.linux:
        case TargetPlatform.windows:
          break;
        case TargetPlatform.android:
        case TargetPlatform.fuchsia:
          // Collapse the selection and hide the toolbar and handles.
          userUpdateTextEditingValue(
            TextEditingValue(
              text: textEditingValue.text,
              selection: TextSelection.collapsed(offset: textEditingValue.selection.end),
            ),
            SelectionChangedCause.toolbar,
          );
          break;
      }
    }
    clipboardStatus?.update();
  }

源码的注释是将当前内容复制到剪贴板,clipboardStatus是检测剪贴板是否可以粘贴。因为检测结果是"频繁采集剪贴板" 将日志文件下载看了下,确实频率非常高,那是不是跟这个状态被更新有关呢? 抱着试试看的态度,将源码的最后一行注释掉,重新编译打包

Dart 复制代码
//clipboardStatus?.update();

提交到VIVO隐私自检,果然不出所料:检测通过!

将此问题做个记录,可以帮到后面的同学们

注意:每个项目使用的版本可能不一致,建议优先找这个函数copySelection

相关推荐
悟空瞎说14 小时前
Flutter 架构详解:新手必懂底层原理
flutter
SoaringHeart17 小时前
Flutter最佳实践:IM聊天文字链接自动识别跳转
前端·flutter
恋猫de小郭20 小时前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
风华圆舞2 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
韩曙亮2 天前
【Flutter】Flutter 组件 ④ ( 组件渲染 的 三棵树理论 | Widget 树 → Element 树 → RenderObject 树 )
flutter·element·widget·renderobject
恋猫de小郭2 天前
Android 17 正式版发布,全新 AI 和各种破坏性更新
android·前端·flutter
kingbal2 天前
Windows:flutter环境搭建
windows·flutter
911hzh2 天前
Flutter MethodChannel 跨端通信框架 zh_native_channel:快速入门、优势分析与 Pigeon 对比
flutter
911hzh2 天前
Flutter 快速搭建新项目:用 Flutter Foundation Kit 一条命令生成带基础架构的 App 模板
flutter