框架优化/升级方案
为了有更好的用户体验,我们提出以下优化和升级方案。
白屏体验
网络恢复
一、可能的初始”白屏”(可选)
1、场景
页面无任何占位视图。如页面本身就是一个列表。
页面数据来源于网络,网络请求回来前,空。
2、处理方案及实现方式
主要有以下两种方案,各自独立,分场景使用。
①界面框架预染页(美团/饿了么的灰底效果)
②数据预加载(首页)
2.1、处理方案:界面框架的预染页:美团/饿了么的灰底效果(如商品详情页)
2.1.1、方案描述
美团/饿了么的灰底效果(如商品详情页)
2.1.2、实现方式
1 | // bad |
2.2、数据预加载(根据需要)
当realWidgets中的数据全部来自网络时候,也有白屏的可能,如列表,如需确实有界面框架显示,使用如下方式:
初次冷启动:
使用与产品约定的默认数据来加载
其他:
保存缓存数据,下次使用缓存数据来加载
3、工期预算
框架接入 2d
二、请求结束后的”白屏”(必须)
1、场景
②处理请求后的场景:文字提示+页面展示(无数据+无网络)
2、处理方案及实现方式
2、网络异常:
为页面提供网络异常页并伴有刷新恢复重试
3、工期预算
框架接入 2d
三、网络异常(提示+恢复)
2.1、文字提示
根据情况,弹出易于用户理解的错误提示
- 接口问题:服务器开小差了,请稍后重试
2.2、界面提示(实现网络恢复后能再显示正确界面)
1 | // bad |
四、程序异常(上报+提示)
接入bugly服务+自定义异常页
接入第三方bugly 或华为AGC的崩溃服务
默认的程序异常页 VS 处理后的程序异常页

程序异常上报后的后台:
工期预算
异常上报 1d
五、测试问题反馈与排查优化
1、新增查看版本页面
新增查看版本页面,方便对应反馈的问题出现的版本(防止是旧包)。
2、新增抓包设置(代理)
新增代理设置,方便接口人员抓包排查
六、视觉体验优化
定义加载动画loading
愿望灯动画效果优化(底部下沉)
1、Loading自定义
UI提供 images 或 json,自定义loading动画
2、愿望灯
采用上层愿望灯不变,底部进行下沉动画来实现愿望灯上飘的效果
3、Toast自定义
图层
七、开发规范优化
1、用户操作/页面形态展示优化
1、入口的点击
内部界面
开发中/已实现:
点击后直接进入,并展示
待开发:
点击后,弹出”将进入XXX功能,其待开发中”
产品未规划:
不显示该入口
2、h5白屏
重定向
域名切换:tke
八、接口请求优化:接口拆分
通过页面分析,与产品和后台确认哪些页面需要进行接口拆分。
目前可能需要处理的有:
- 商品详情页
框架实现拆分项
1、是否显示加载动画isLoading
1.1、loading动画(images 或 json)
使用 image 或 json 实现loading动画
1.2、含loading显示控制的页面组件
1 | static void showLoading(bool show); |
2、页面状态PageType
2.1、加载结束不同页面状态页面组件
| 编号 | 页面状态PageType | 功能 | 人日 | |
|---|---|---|---|---|
| 1 | 加载失败 | errorWidget | 0.25 | |
| 2 | 加载成功,但无数据 | nodataWidget(含”重新加载”操作) | 0.5 | |
| 3 | 加载成功,且有数据 | successWidget | 0 |
2.2、含页面状态控制的视图组件
通过传入不同的状态,显示不同状态下的页面
3、请求
5、含状态管理的页面基类
1 | int currentPageType = successWidget; // 默认的状态页面 |
待安排优化
1、网络库升级
重构及增加错误码友好提示处理 1d
2、基类新增处理
键盘收起
默认颜色+自定义背景颜色
状态获取
导航栏重用success上添加的
1
2
3
4
5
6
7 Visibility 隐藏/可见,能保存组件的状态;Offstate不能保存组件的状态,组件重新加载
* 控制child是否显示
*
当offstage为true,控件隐藏; 当offstage为false,显示;
当Offstage不可见的时候,如果child有动画等,需要手动停掉,Offstage并不会停掉动画等操作。
const Offstage({ Key key, this.offstage = true, Widget child })
- 网页加载库替换,新增错误码监听,统一js
- 基础框架新增背景设置及修复有背景时候界面显示问题,error/nodata新增color设置,用于设置透明
- 基础框架新增unkonw类型,兼容有无初始显示界面的设置
- 基础框架优化appbar设置,及提供最简易常用的导航栏
- Mock api 新增缓存功能
- Bruno接入及编译修复
- 版本升级管理
- 数据缓存处理
- 精选愿望单原型开发完成,待联调
- 新增百愿清单原型开发完成,待联调
3、App快速实现置灰样式
白屏:
①处理请求前的场景:数据预加载+框架预染页(美团/饿了么的灰底效果)
②处理请求后的场景:文字提示+页面展示(无数据+无网络)
2、网络异常:
为页面提供网络异常页并伴有刷新恢复重试
3、程序异常(上报+提示):
接入bugly服务+自定义异常页
4、视觉体验优化
定义加载动画loading
愿望灯动画效果优化(底部下沉)
5、测试优化
新增查看版本页面,方便对应反馈的问题
新增代理设置,方便接口人员抓包排查
6、其他
AA送礼:提测,待测试验证后,如有问题修复
开发者账号申请审核未通过,正在处理。 (因为域名问题被拒,新域名已经准备好了,在跟apple沟通中)
下周:
继续我的模块开发,联调接口。
在完成”我的”模块或等待接口情况下,评估及开发产品规划的其他功能。
目前:
框架升级(白屏、预览页灰底、网络刷新恢复页,异常上报及异常页):今天
愿望灯 ok
许个愿 ok
我的:部分在联调,部分在等接口
AA送礼:提测,待测试验证后,如有问题修复
loading
开发者账号申请审核未通过,正在处理。 (因为域名问题被拒,新域名已经准备好了,在跟apple沟通中)