TextTreeRenderer这个类是很有意思的,它差不多有300多行代码,但是只有三个方法,更严格来说是只有两个方法。因为开放的(public)render方法也是通过私有的(private)_debugRender实现其主要功能的;另一个是_childTextConfiguration方法,这个方法只有两行代码实现。所以这个类重心就是在_debugRender方法,在解读_debugRender方法之前,我们先说说属性吧。
属性:
- _wrapWidth 这个属性对应的值是int类型,代表的一行最大字符数
- _wrapWidthProperties 这个属性对应的值也是int类型,代表的属性一行的最大字符数。
- _minLevel 这个属性对应的值是DiagnosticLevel枚举类型,定义了当当前的子节点的level低于_minLevel时是会被过滤掉的,即不会输出和展示。
- _maxDescendentsTruncatableNode 这个属性对应的值也是int类型,对应的值代表最大子孙节点的个数
方法:
- _childTextConfiguration 这个方法就是获取当前的节点的子孙节点的textStyle,返回值的类型是TextTreeConfiguration。内部实现也很好看懂,就是当子节点是单行的样式和DiagnosticsTreeStyle.errorProperty就使用当前节点的样式,除此之外就用子节点本身的样式。
- render 这个方法在release环境就是直接返回空字符串的,非release环境就是调用的下方的_debugRender方法
- _debugRender这个方法内部的实现初一看是很复杂的,但是如果很熟悉
这是解读flutter foundation的diagnostic中的一篇,如有错漏之处,还望斧正。
网友评论