DiagnosticsSerializationDelegate是有3个属性和7个方法的,_DefaultDiagnosticsSerializationDelegate实现了DiagnosticsSerializationDelegate方法,除了工厂方法,会用DiagnosticsSerializationDelegate的代码解读,其他的属性和方法都会用_DefaultDiagnosticsSerializationDelegate解读,解读了_DefaultDiagnosticsSerializationDelegate也就是解读了DiagnosticsSerializationDelegate。
属性有3个,这三个都只能get,不能set:
- subtreeDepth用来控制DiagnosticsNode类型对象垂直结构的层级的
- includeProperties 在DiagnosticsNode序列化时是否包含properties。
- expandPropertyValues 是否扩展具有DiagnosticableMixin类型值的属性
方法有7个:
- 在DiagnosticsSerializationDelegate里的工厂方法DiagnosticsSerializationDelegate(), 返回的就是_DefaultDiagnosticsSerializationDelegate类型的对象
- additionalNodeProperties返回DiagnosticsNode类型的一些其他的可序列化信息的映射
- filterChildren这个方法会传入两个参数,一个是List<DiagnosticsNode>类型的,一个是DiagnosticsNode类型的。参数owner是参数nodes的”拥有者“,在这个方法内可以筛选出owner新持有的children,即子节点的集合。这个新的集合可能是nodes的子集,也有可能是全新的子节点集合。
- filterProperties这个方法和filterChildren非常相似,唯一的不同时,它过滤得不是子节点集合,而是属性(property)的集合。
- truncateNodesList这个方法传入的也是两个参数,但是返回的值一定是nodes的子集,同时nodes可以代表是子节点集合或者属性(property)集合。
- delegateForNode这个方法返回DiagnosticsSerializationDelegate类型的值,其对应的subtreeDepth的值会减1。
- copyWith这个方法就是对当前对象的深复制
这是解读flutter foundation的diagnostic中的一篇,如有错漏之处,还望斧正。