init static method
Future<void>
init(
- FlutterOptionsConfiguration optionsConfiguration, {
- AppRunner? appRunner,
- @internal MethodChannel channel = _channel,
- @internal PlatformChecker? platformChecker,
- @internal RendererWrapper? rendererWrapper,
Implementation
static Future<void> init(
FlutterOptionsConfiguration optionsConfiguration, {
AppRunner? appRunner,
@internal MethodChannel channel = _channel,
@internal PlatformChecker? platformChecker,
@internal RendererWrapper? rendererWrapper,
}) async {
final flutterOptions = SentryFlutterOptions();
// ignore: invalid_use_of_internal_member
sentrySetupStartTime ??= flutterOptions.clock();
if (platformChecker != null) {
flutterOptions.platformChecker = platformChecker;
}
if (rendererWrapper != null) {
flutterOptions.rendererWrapper = rendererWrapper;
}
if (flutterOptions.platformChecker.hasNativeIntegration) {
final binding = createBinding(flutterOptions.platformChecker, channel);
_native = SentryNative(flutterOptions, binding);
}
final platformDispatcher = PlatformDispatcher.instance;
final wrapper = PlatformDispatcherWrapper(platformDispatcher);
// Flutter Web don't capture [Future] errors if using [PlatformDispatcher.onError] and not
// the [runZonedGuarded].
// likely due to https://github.com/flutter/flutter/issues/100277
final isOnErrorSupported = flutterOptions.platformChecker.isWeb
? false
: wrapper.isOnErrorSupported(flutterOptions);
final runZonedGuardedOnError = flutterOptions.platformChecker.isWeb
? _createRunZonedGuardedOnError()
: null;
// first step is to install the native integration and set default values,
// so we are able to capture future errors.
final defaultIntegrations = _createDefaultIntegrations(
channel,
flutterOptions,
isOnErrorSupported,
);
for (final defaultIntegration in defaultIntegrations) {
flutterOptions.addIntegration(defaultIntegration);
}
await _initDefaultValues(flutterOptions, channel);
await Sentry.init(
(options) => optionsConfiguration(options as SentryFlutterOptions),
appRunner: appRunner,
// ignore: invalid_use_of_internal_member
options: flutterOptions,
// ignore: invalid_use_of_internal_member
callAppRunnerInRunZonedGuarded: !isOnErrorSupported,
// ignore: invalid_use_of_internal_member
runZonedGuardedOnError: runZonedGuardedOnError,
);
if (_native != null) {
// ignore: invalid_use_of_internal_member
SentryNativeProfilerFactory.attachTo(Sentry.currentHub, _native!);
}
}