美文网首页
flutter foundation的DiagnosticsNo

flutter foundation的DiagnosticsNo

作者: 一叠纸船 | 来源:发表于2020-09-16 21:27 被阅读0次

这个类是个抽象类,也是在diagnostic里最核心的一个类。

这个类的形参有5个,有一个参数name是必须设置的。

有5个属性有如下:

  1. name这个属性是String类型的,就是用来描述当前DiagnosticsNode的,通常显示在冒号之前2. showSeparator这个属性是bool类型的,就是为了控制是否显示name和description之间的冒号的
  2. showName这个属性也是bool类型的,为了控制是否显示name。当设置为false的是否,一般是值的说明会让人一目了然的情况
  3. linePrefix这个属性是String类型的,是每一行的前缀
  4. style这个属性是DiagnosticsTreeStyle枚举类型的,是当前的节点展示的样式选择

有8个get方法:

  1. level 这个返回值是DiagnosticLevel枚举类型,在release环境是DiagnosticLevel.hidden, 非release环境是DiagnosticLevel.info。
  2. emptyBodyDescription这个返回值是String类型,在没有任何的属性和子节点的情况下展示的说明
  3. value 这个返回值是Object类型, 是诊断数据的实际对象。
  4. allowWrap 这个返回值是Bool类型, 值是在多行的情况下是否允许换行
  5. allowNameWrap 这个返回值是Bool类型, 是否允许name的值换行
  6. allowTruncate 这个返回值是Bool类型, 在展示该节点和节点的是否是否允许被截断
  7. _separator 这个是内部的一个get方法,返回值是String类型,逻辑很简单是由showSeparator这个属性决定的
  8. textTreeConfiguration这个返回值是TextTreeConfiguration枚举类型,返回值会决定此对象是以怎样的文本格式呈现的。

有方法如下:

  1. toDescription这个方法有一个可选的参数,返回值是String类型,返回的是对该节点本身(不包含子节点和属性)的一个简要的概括,可以选择传入TextTreeConfiguration枚举类型的参数,是因为父节点的文本展示类型会影响返回值的展示。比如父节点的属性之间没有换行,那么如果当前是一个属性节点,就尽量只有一行值返回。
  2. isFiltered,这个方法会传染一个参数minLevel,是DiagnosticLevel枚举类型,如果是在非release环境下,如果当前的节点的level低于minLevel,返回值就是true,就代表会被过滤掉
  3. getProperties 这个方法就是获取当前节点的子属性,返回值是List<DiagnosticsNode> 类型
  4. getChildren 这个方法就是获取当前节点的子节点,返回值是List<DiagnosticsNode> 类型
  5. toJsonMap 这个方法也是我们常会写的,就是把当前对象转变成map类型。传入的是DiagnosticsSerializationDelegate类型的delegate,主要就是在转换的过程中增加输出一些自定义的信息,还有就是过滤子节点和属性列表。
  6. toJsonList 这个方法会传入是三个参数除了和上一条一样传入一个DiagnosticsSerializationDelegate类型的delegate,还有一个List<DiagnosticsNode> 类型的nodes, 还有就是一个DiagnosticsNode类型的parent。这个方法其实就是序列化nodes里的所有数据,通过的方式就是调用DiagnosticsSerializationDelegate里的truncateNodesList和delegateForNode方法,及上一条的toJsonList方法来实现的。
  7. toString这个方法会让当前的对象以String类型为返回值返回,如果当前的是style是DiagnosticsTreeStyle.singleLine的,调用下一条toStringDeep方法; 如果不是就调用toDescription方法。
  8. toStringDeep这个方法其实就是在非debug环境是直接返回空的,在debug环境会初始化一个TextTreeRenderer对象并调用render方法。

这是解读flutter foundation的diagnostic中的一篇,如有错漏之处,还望斧正。

相关文章

网友评论

      本文标题:flutter foundation的DiagnosticsNo

      本文链接:https://www.haomeiwen.com/subject/iypcyktx.html