initVeApm function

void initVeApm({
  1. bool enableReplaceDefaultErrorWidget = true,
  2. BindingInitHandler? bindingInitHandler,
  3. VeApmErrorFilter? errorFilter,
})

Implementation

void initVeApm({bool enableReplaceDefaultErrorWidget = true, BindingInitHandler? bindingInitHandler,
    VeApmErrorFilter? errorFilter}) {
    // 单独使用APM时初始化WidgetsFlutterBinding
    if (bindingInitHandler != null) {
      bindingInitHandler();
      assert(ApmWidgetsFlutterBinding.isInit, 'Please make your custom binding extends ApmWidgetsFlutterBinding.');
    } else {
      ApmWidgetsFlutterBinding.ensureInitialized();
    }

    if (errorFilter != null) {
      ApmErrorTrace.instance.veApmErrorFilter = errorFilter;
    }

    final FlutterExceptionHandler? _origErrorHandler = FlutterError.onError;
    FlutterError.onError = (FlutterErrorDetails details) {
      veApmExceptionHandler(details, StackTrace.current);
      _origErrorHandler?.call(details);
    };

    if (enableReplaceDefaultErrorWidget) {
      ApmErrorTrace.instance.replaceErrorWidget();
    }

    // for monitor auto fps
    WidgetsBinding.instance.addObserver(ApmWidgetsBindingObserver());
}