loadGlobalLibrary static method

void loadGlobalLibrary({
  1. EasyLogger? globalLogger,
  2. List<VmClass> coreClassList = const [],
  3. List<VmProxy> coreProxyList = const [],
  4. List<VmClass> userClassList = const [],
  5. List<VmProxy> userProxyList = const [],
  6. dynamic nativeValueConverter(
    1. dynamic value
    )?,
  7. String? quickTypeSpeculationMethod(
    1. dynamic instance
    )?,
  8. bool logObjectStackInAndOut = false,
  9. bool logSlowTypeSpeculation = true,
})

加载全局作用域

  • globalLogger 自定义全局日志器
  • coreClassList dart语言的核心类型,如:dart:async、dart:collection、dart:convert、dart:core、dart:math、dart:typed_data、dart:io、dart:isolate 等库
  • coreProxyList dart语言的核心全局方法或全局实例
  • userClassList 开发时按需导入的类型
  • userProxyList 开发时按需导入的全局方法或全局实例
  • nativeValueConverter 读取原生数据值转换器,如:在flutter中经常需要
  • quickTypeSpeculationMethod 加速类型推测的函数
  • logObjectStackInAndOut 打印对象栈的变化
  • logSlowTypeSpeculation 打印慢的类型推断

Implementation

static void loadGlobalLibrary({
  EasyLogger? globalLogger,
  List<VmClass> coreClassList = const [],
  List<VmProxy> coreProxyList = const [],
  List<VmClass> userClassList = const [],
  List<VmProxy> userProxyList = const [],
  dynamic Function(dynamic value)? nativeValueConverter,
  String? Function(dynamic instance)? quickTypeSpeculationMethod,
  bool logObjectStackInAndOut = false,
  bool logSlowTypeSpeculation = true,
}) {
  _vmwareLogger = globalLogger ?? _vmwareLogger;
  VmObject.nativeValueConverter = nativeValueConverter;
  VmClass.quickTypeSpeculationMethod = quickTypeSpeculationMethod;
  if (logSlowTypeSpeculation) {
    VmClass.slowTypeSpeculationReport = (instance, vmclass, cycles, total) {
      _vmwareLogger.logFatal(['slowTypeSpeculationReport ======>', instance.runtimeType, '------>', vmclass.identifier, '------>', 'cycles:', cycles, '/', total]);
    };
  }
  if (logObjectStackInAndOut) {
    VmRunner.objectStackInAndOutReport = (isIn, isOk, length, members) {
      (isOk ? _vmwareLogger.logDebug : _vmwareLogger.logError)(['objectStackInAndOutReport ======>', isIn ? 'in' : 'out', '------>', isOk ? 'ok' : 'error', '------>', length, '--->', members]);
    };
  }
  VmRunner.loadGlobalLibrary(
    coreClassList: coreClassList,
    coreProxyList: coreProxyList,
    userClassList: userClassList,
    userProxyList: userProxyList,
  );
}