├── README.md
└── 第一期 keframe
└── keframe1.md
/README.md:
--------------------------------------------------------------------------------
1 | # flutter_apodidae
2 |
3 | 
4 |
5 | 项目名 Apodidae (雨燕)是飞翔速度最快的鸟类,与 Flutter (颤动)不谋而合。
6 |
7 | 这个项目用于收录 Flutter 中的优化合集,向大家分享各种 Flutter 的优化技巧。
8 |
9 | 如果你想分享你的优化效果,或者让你的 App 被更多人看到,非常欢迎你 show 出你的 **代码/录屏**。
10 |
11 | 如果你遇到了优化相关问题,提出 issue。
12 |
13 | 第一期已上线,一起来看看 3 位开发者具体在项目中的效果:[keframe 第一期优化](https://github.com/fluttercandies/flutter_apodidae/blob/master/%E7%AC%AC%E4%B8%80%E6%9C%9F%20keframe/keframe1.md)
14 |
15 | 我会收集优化 [keframe](https://github.com/LianjiaTech/keframe) 的优化 case (录屏或者代码)整合到项目中,同时也会尝试,对一些已有的 flutter example 进行 [keframe](https://github.com/LianjiaTech/keframe) 优化。
16 |
17 | 所以如果你手上有不错的优化效果,非常欢迎你录制优化前后的对比视频以及(devtools 或者 [fps_monitor](https://pub.dev/packages/fps_monitor) 中的性能截图)欢迎发送到我的邮箱 762579473@qq.com/公众号/QQ 与我联系。所有收录的项目,我都会贴上你的推荐信息为你引流。
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/第一期 keframe/keframe1.md:
--------------------------------------------------------------------------------
1 | ## 合集展示
2 |
3 | 注:Github 限制 gif 大小,超过 10 mb 无法上传。
4 |
5 | ### 1. 一秒语音包变声器 App
6 |
7 | [瑞宇](https://github.com/zhangruiyu) 独立开发的 **一秒语音包变声器**,市场累计下载量 100w+,获得过华为耀星 App 奖
8 |
9 | 
10 |
11 | 下面是使用 keframe 前后统计 300 帧的对比:
12 |
13 | >**卡顿帧从平均 60 帧出现一次优化为 300 帧中出现一次,轻微卡顿由平均 7 帧一次优化为未出现,流畅占比从 36.3% 提高到 74.7%**。
14 |
15 | #### **数据展示**
16 |
17 | 测试机型:Mate30 pro
18 | | 优化前 | 优化后 |
19 | | ------------------------------------------------------------ | ------------------------------------------------------------ |
20 | |  |  |
21 |
22 | | | 优化前 | 优化后 |
23 | | -------------------------- | ------- | ---------------------- |
24 | | 平均多少帧出现一帧卡顿 | 60 | 300 |
25 | | 平均多少帧出现一帧轻微卡顿 | 7.0 | 未出现轻微卡顿 |
26 | | 最大耗时 | 146.0ms | 76.0ms(图中展示有误) |
27 | | 平均耗时 | 25.2ms | 18.3ms |
28 | | 流畅帧占比 | 36.3% | 74.7% |
29 |
30 | 这个 Case 中,卡顿大多发生在 TAB 切换的场景。因为系统会在瞬间完成页面渲染,如果页面结构复杂,在 mate30 pro 这样的高端设备上也容易引起卡顿。通过 keframe 对页面中每一个模块进行分帧加载,能有效优化切换时的卡顿。并且从体感而言,整个过渡任然非常自然。
31 |
32 | ***
33 |
34 | ### 2. 匿名 A 岛
35 |
36 | 「麋鹿君」,一个还在战斗的独立开发,上架了多款精美的应用,[AppStore](https://apps.apple.com/cn/developer/嘉楠-孙/id1480541469) & [GooglePlay](https://play.google.com/store/apps/dev?id=5706067037523299093)
37 |
38 |
39 |
40 |
41 | > 开发者反馈:这是一款刚刚开始的 A 岛第三方客户端项目,搭配 Keframe 框架后在测试用机(乐视1s)上有惊人表现,效果对比「惨烈」。
42 |
43 | #### 数据展示
44 |
45 | 下面是使用 keframe 前后统计 100 帧的对比,测试机型:乐视 1S。
46 |
47 | | 优化前 | 优化后 |
48 | | ------------------------------------------------------------ | ------------------------------------------------------------ |
49 | |
|
|
50 |
51 | 这个优化效果我觉得不需要任何多余的说明,**整个 App 从几乎不可用状态到 100 帧中 0 卡顿**。这也是 keframe 优化的最大价值,让**一些复杂页面在中低端设备上从不可用到流畅运行的状态**。
52 |
53 | 同时还有 iPhone11 上的演示数据
54 |
55 | | 优化前 | 优化后 |
56 | | --- | --- |
57 | |  | |
58 |
59 | 性能较好的设备本身卡顿也几乎不存在卡顿,而 keframe 则更进一步保证了每一帧的流畅。
60 |
61 |
62 | ### 3、百灵创作
63 | 这是一款还在开发阶段的 App ,希望做一款简约而不简单,自由又安全的专业码字软件。
64 | #### 数据展示
65 |
66 | 下面是使用 keframe 前后统计 300 帧的对比,测试机型:小米 9。
67 |
68 | | 优化前 | 优化后 |
69 | | ------------------------------------------------------------ | ------------------------------------------------------------ |
70 | | |  |
71 |
72 | **卡顿峰值从 244.0ms 降低到了 126.0ms ,从平均 50 帧出现一次卡顿优化为平均 150 帧出现一次卡顿,300帧平均帧率从 22.4ms 优化至 18.5 ms**。
73 |
74 |
75 | 有关 keframe 的更多用法请查看:
76 |
77 | github 地址:[https://github.com/LianjiaTech/keframe](https://github.com/LianjiaTech/keframe)
78 |
79 | pub 查看:[https://pub.dev/packages/keframe](https://pub.dev/packages/keframe)
80 |
81 | > **Dont forget star !**
82 |
83 | ##
84 |
85 | 我日常的使用经验来看,对于一些分页的列表,我会将 ListView 的 `cacheExtent` 设置为 700,同时加上渐变动画,在中低端设备上能得到明显的体验优化,而高端设备上用户几乎无感知加载。
86 |
87 | 而对于详情这一类列表项内容有限的页面,我会将 `cacheExtent` 直接调到 `double.infinity`,打开页面即进行分帧加载,这样在滑动过程中也能带来最好的体验。
88 |
89 | 再次感谢提供案例的三位开发者,能感受到每个开发者对自己的 app 倾注了大量的心血,做得都非常精美。
90 |
91 | 最后,非常欢迎分享你的优化演示或者优化技巧(不局限于 keframe),这个项目会持续跟进,欢迎你的关注。
92 |
93 |
--------------------------------------------------------------------------------