call method

  1. @override
Future<void> call(
  1. Hub hub,
  2. SentryFlutterOptions options
)
override

A Callable method for the Integration interface

Implementation

@override
Future<void> call(Hub hub, SentryFlutterOptions options) async {
  try {
    if (options.release == null || options.dist == null) {
      final packageInfo = await PackageInfo.fromPlatform();
      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');
}