flutter foundation的diagnostics

2020-09-11  本文已影响0人  一叠纸船

这个文件有近3800行代码,内容非常多,我会以类的角度来一个一个写。

看起来真是头皮发麻,不着急,一点点抽丝剥茧慢慢看代码。

  1. TextTreeConfiguration这个类没有方法,只有一些属性。点击此处,可以详细了解TextTreeConfiguration。

  2. _PrefixedStringBuilder这个类是一个前缀的字符串构造者。点击此处,可以详细了解_PrefixedStringBuilder

  3. TextTreeRenderer这个类是diagnostics的核心类之一,它实现了对节点(node)的属性和子孙的遍历过程。点击此处,可以详细了解TextTreeRenderer

  4. DiagnosticsNode这个类也是diagnostics的核心类之一,也是一个抽象类,它高度抽象除了节点本身,还有属性列表(properties)和子孙集合(children), 点击此处,可以详细了解DiagnosticsNode

  5. DiagnosticableNode这个是继承自DiagnosticsNode,实现很简单,在获取value的时候做了一个懒加载处理,此外简单实现了getChildren和getProperties两个方法

  6. DiagnosticableTreeNode这个类继承了DiagnosticableNode,这个类实现超级简单,只是重写了getChildren方法,就是在value不为null时,返回value.debugDescribeChildren()。

  7. DiagnosticPropertiesBuilder这个类很简单, 点击此处,可以详细了解DiagnosticPropertiesBuilder

  8. 整个flutter项目也没有地方用到,而且文档已经说明即将会被移除

  9. 这个是Diagnosticable,定义的也很基础,点击此处,可以详细了解Diagnosticable

  10. DiagnosticableTree和DiagnosticableTreeMixin实现基本是一样的,点击此处,可以详细了解DiagnosticableTree和DiagnosticableTreeMixin

  11. DiagnosticsBlock这个类的定义,从文档显示是因为DiagnosticsNode存在的意义通常是为缺乏有意义的值的展示提供容器,而DiagnosticsBlock通常是展示复杂的内嵌错误信息。这个目的是最重要的,其他的一些属性和方法和DiagnosticsNode相比没有什么不同。

  12. DiagnosticsSerializationDelegate和_DefaultDiagnosticsSerializationDelegate,_DefaultDiagnosticsSerializationDelegate实现了DiagnosticsSerializationDelegate,他们也相对比较独立,所以也放在一起说,点击此处,可以详细了解 DiagnosticsSerializationDelegate和_DefaultDiagnosticsSerializationDelegate

  13. DiagnosticsProperty这个类是继承DiagnosticsNode的,这个类是DiagnosticsNode抽象类在属性(property)方面的具体类,属性和方法上做了具体的一般实现,看源码也是一目了然的

  14. MessageProperty, StringProperty, _NumProperty, DoubleProperty, IntProperty, PercentProperty, FlagProperty, IterableProperty, ObjectFlagProperty和FlagsSummary,这些类很多,但是都是继承DiagnosticsProperty类的,其实每个实现就是做了一些个性化的实现,根据名字也很好知道是做什么的。

这篇文章就是解读foundation模块下最大的文件diagnostics.dart的内容的。如有不足之处,还望斧正。

上一篇下一篇

猜你喜欢

热点阅读