您当前的位置: 首页 >  ar

Allen Su

暂无认证

  • 0浏览

    0关注

    431博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Flutter 问题系列第 64 篇】解决剪贴板复制的有内容,但却提示 ClipboardData 为 null 的问题

Allen Su 发布时间:2022-05-26 11:04:52 ,浏览量:0

这是【Flutter 问题系列第 64 篇】,如果觉得有用的话,欢迎关注专栏。

一:问题描述

搞了一个类似淘口令的功能,功能比较简单,伪代码如下所示

  /// 监测生命周期的变化
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    print("生命周期状态:$state");
    if (state == AppLifecycleState.resumed) {
      getClipboardContents();
    }
    super.didChangeAppLifecycleState(state);
  }

  /// 使用异步调用获取系统剪贴板的返回值
  getClipboardContents() async {
    // 访问剪贴板的内容。
    ClipboardData? clipboardData = await Clipboard.getData(Clipboard.kTextPlain);
    print("获取到的剪贴板内容:$clipboardData");
  }

但遇到了一个小问题,我在手机上已经复制了一段文字,然后切回到 App ,此时生命周期已经监测到状态为 resumed ,然后去获取剪贴板上的内容时,却一直提示 ClipboardData 为 null。

如下图所示

在这里插入图片描述

二:解决方案

在 github 上有人也遇到了同样的问题,点击 链接跳转 查看原文。

其实就是在异步调用获取系统剪贴板的内容前,加了一个延时操作,修改后就可以正常获取剪贴板上的内容了。

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    print("生命周期状态:$state");
    // 当App生命周期状态为恢复时。
    if (state == AppLifecycleState.resumed) {
      // 修改前
      // getClipboardContents();
      // 修改后
      Future.delayed(Duration(milliseconds: 100)).then((value) => getClipboardContents());
    }
    super.didChangeAppLifecycleState(state);
  }

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。

结束语 Google 的 Flutter 越来越火,截止 2022年5月26日 GitHub 标星已达 141K,Flutter 毅然是一种趋势,所以作为前端开发者,没有理由不趁早去学习。 无论你是 Flutter 新手还是已经入门了,不妨先点个关注,后续我会将 Flutter 中的常用组件(含有源码分析、组件的用法及注意事项)以及可能遇到的问题写到 CSDN 博客中,希望自己学习的同时,也可以帮助更多的人。
关注
打赏
1656491068
查看更多评论
立即登录/注册

微信扫码登录

0.0379s