call method
A Callable method for the Integration interface
Implementation
@override
FutureOr<void> call(Hub hub, SentryFlutterOptions options) async {
try {
if (options.release == null || options.dist == null) {
final packageInfo = await _packageLoader();
var name = _cleanString(packageInfo.packageName);
if (name.isEmpty) {
// Not all platforms have a packageName.
// If no packageName is available, use the appName instead.
name = _cleanString(packageInfo.appName);
}
final version = _cleanString(packageInfo.version);
final buildNumber = _cleanString(packageInfo.buildNumber);
var release = name;
if (version.isNotEmpty) {
release = '$release@$version';
}
// At least windows sometimes does not have a buildNumber
if (buildNumber.isNotEmpty) {
release = '$release+$buildNumber';
}
options.logger(SentryLevel.debug, 'release: $release');
options.release = options.release ?? release;
if (buildNumber.isNotEmpty) {
options.dist = options.dist ?? buildNumber;
}
}
} catch (exception, stackTrace) {
options.logger(
SentryLevel.error,
'Failed to load release and dist',
exception: exception,
stackTrace: stackTrace,
);
}
options.sdk.addIntegration('loadReleaseIntegration');
}