背景
目前西瓜视频作者侧 Flutter 业务场景已经覆盖了 40多个页面 (包括视频播放场景),用户侧核心场景包括我的 Tab 也已经是 Flutter,在开发过程中,暴露了一些问题,debug 调试难、离开了 IDE 后犹如抓瞎、PM 设计 QA 验收过程中拿不到有用的信息,在市面上找了一圈,也没有类似 iOS Flex 这样强大的调试工具,例如视图大小、层级的展示,实例对象属性的实时修改,网络请求抓取,log 日志打印,文件查看等,所以西瓜视频 Flutter 基础团队决定开发 UME。
介绍
UME (读音:油米~) 是一个 Flutter 调试工具包,内部集成了丰富的调试小工具,设计UI、网络、监控、性能、logger 等,无论是研发、PM、还是 QA 均能使用。

目前已实现的功能

接下来会详细介绍一些核心功能的使用效果以及核心实现:
模块详解
Widget 信息
可以查看当前选中 widget 的大小、名称,文件路径以及代码所在行数,有了这工具,即使你不负责这个功能模块的开发,你也能迅速找到当前代码。

那如何能获取到选中当前 widget 的信息呢,大小通过RenderObject 就能拿到,那 widget 的代码位置呢?通过WidgetInspectorService 中的 getSelectedSummaryWidget 便可以获取到一个json字符串,我们来看下它的结构:
{
"description":"Text",
"type":"_ElementDiagnosticableTreeNode",
"style":"dense",
"hasChildren":true,
"allowWrap":false,
"locationId":0,
"creationLocation":{
"file":"file:///Users/.../example/lib/home/widgets/category_card.dart",
"line":69,
"column":15,
"parameterLocations":[
{
"file":null,
"line":70,
"column":24,
"name":"data"
},
...
]
},
"createdByLocalProject":true,
"children":[
{
"description":"RichText",
"type":"_ElementDiagnosticableTreeNode",
"style":"dense",
"allowWrap":false,
"locationId":1,
"creationLocation":{
"file":"file://../packages/flutter/lib/src/widgets/text.dart",
"line":425,
"column":21,
"parameterLocations":[
{
"file":null,
"line":426,
"column":7,
&n

最低0.47元/天 解锁文章
2万+





