channel_observer_of_kit

用于记录platform channel 最近的调用记录,并支持显示的提示可能由于native通信所导致的type error异常。

支持release/debug

(参赛作品)

使用

**

下方使用方式,主要针对日常情况下,对项目中native通信过程所导致的类型转换错误的监控和调用记录的展示。

由于在中大型项目中,和native的通信复杂且由于native端可能由不同人/项目组 维护,所以在测试时并不能全路径覆盖,且Flutter的异常并非阻断式,所以没有显示的提示情况下,很难及时发现。故,通过增加悬浮窗及监听的方式(也可以扩展上报到日志服务器),在测试组测试时,显式的通知测试同学。

**

main函数中添加如下方法:

		void main() {
		  ChannelObserverOfKit.customZone(const YourRootWwidget());
		}

(非必须)将ChannelObserverWidget 添加到任意位置,建议悬浮窗:

                OverlayEntry entry = OverlayEntry(builder: (_) => const ChannelObserverWidget());
                Overlay.of(context)?.insert(entry);

更多使用方式

Tip: 如果不使用ChannelObserverOfKitcustomZonerunApp方法,那么,下方的功能将失效。 即,需要你自行实现并混入ChannelObserverServicesBinding。具体可见代码实现方式。

导出最近调用记录

该模块核心功能主要是native channel的调用记录。 所以可以通过ChannelObserverOfKit.getBindingInstance().popChannelRecorders()拉取最近的调用记录,用作它用。

现有项目中直接混入ChannelObserverServicesBinding

此外ChannelObserverOfKitcustomZonerunApp 两个方法并非必须使用,如果项目中有类似的自定义,也可以直接混入ChannelObserverServicesBinding 或者仿照代码,做自定义更改。

处理zone内的error

///zone的error处理方法
/// * 可以覆盖此方法,然后自处理相关错误
/// * PS. 如果覆盖[zoneErrorHandler],将导致[ChannelObserverOfKit._errorStreamController]
/// * 、[ChannelObserverWidget]的失效。
ZoneErrorHandler zoneErrorHandler = ChannelObserverOfKit._defaultErrorHandler;

ChannelObserverOfKit.errorStream 监听

class ChannelObserverOfKit {

  ///用于控制zone内error的上报
  /// * 基于[customZone] 和 [runApp]的实现。
  static final StreamController<ErrorPackage> _errorStreamController = StreamController.broadcast();

  ///zone error sink
  static StreamSink<ErrorPackage> get errorSink => _errorStreamController.sink;

  ///zone error stream
  /// * 可以监听[errorStream]获取错误信息。
  static Stream<ErrorPackage> get errorStream => _errorStreamController.stream;
  
  
  
  //...other code
  
  }