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

相关推荐
sunly_3 小时前
Flutter:跑马灯公告栏
flutter
奋斗小小鸟cy3 小时前
flutter dio库 源码赏析
flutter
帅次6 小时前
Flutter 基础组件 Scaffold 详解
android·flutter·ios·kotlin·objective-c·webview·android-studio
一人前行9 小时前
Flutter_学习记录_video_player、chewie 播放视频
flutter
怀君10 小时前
Flutter——Android与Flutter混合开发详细教程
android·flutter
pengyu12 小时前
系统化掌握Flutter开发之主题(Theme)(一):筑基之旅
android·flutter·dart
MegatronKing14 小时前
Reqable项目日志——JSON语法高亮性能200倍提升
前端·flutter·测试
pengyu15 小时前
系统化掌握Flutter组件之InteractiveViewer:释放你的双手
android·flutter·dart
恋猫de小郭1 天前
Flutter 小技巧之通过 MediaQuery 优化 App 性能
android·前端·flutter
顾林海1 天前
Flutter Dart 流程控制语句详解
android·前端·flutter