init static method
Future<void>
init(
- FlutterOptionsConfiguration optionsConfiguration, {
- AppRunner? appRunner,
- @internal PackageLoader packageLoader = _loadPackageInfo,
- @internal MethodChannel channel = _channel,
- @internal PlatformChecker? platformChecker,
- @internal RendererWrapper? rendererWrapper,
Implementation
static Future<void> init(
FlutterOptionsConfiguration optionsConfiguration, {
AppRunner? appRunner,
@internal PackageLoader packageLoader = _loadPackageInfo,
@internal MethodChannel channel = _channel,
@internal PlatformChecker? platformChecker,
@internal RendererWrapper? rendererWrapper,
}) async {
final flutterOptions = SentryFlutterOptions();
if (platformChecker != null) {
flutterOptions.platformChecker = platformChecker;
}
if (rendererWrapper != null) {
flutterOptions.rendererWrapper = rendererWrapper;
}
final nativeChannel = SentryNativeChannel(channel, flutterOptions);
if (flutterOptions.platformChecker.hasNativeIntegration) {
final native = SentryNative();
native.nativeChannel = nativeChannel;
}
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);
// first step is to install the native integration and set default values,
// so we are able to capture future errors.
final defaultIntegrations = _createDefaultIntegrations(
packageLoader,
channel,
flutterOptions,
isOnErrorSupported,
);
for (final defaultIntegration in defaultIntegrations) {
flutterOptions.addIntegration(defaultIntegration);
}
await _initDefaultValues(flutterOptions, channel);
await Sentry.init(
(options) async {
await optionsConfiguration(options as SentryFlutterOptions);
},
appRunner: appRunner,
// ignore: invalid_use_of_internal_member
options: flutterOptions,
// ignore: invalid_use_of_internal_member
callAppRunnerInRunZonedGuarded: !isOnErrorSupported,
);
}