openStore method

  1. @override
Future<void> openStore({
  1. AndroidUpgradeOption? androidOption,
  2. IOSUpgradeOption? iOSOption,
})
override

Open App Store or Android application market.

Implementation

@override
Future<void> openStore({
  AndroidUpgradeOption? androidOption,
  IOSUpgradeOption? iOSOption,
}) async {
  if (defaultTargetPlatform == TargetPlatform.android) {
    if (androidOption == null) {
      throw Exception('The AndroidUpgradeOption cannot be empty.');
    } else {
      androidOption.channel = methodChannel;
      final String url = await androidOption.url;

      if (url.isBlank) {
        await _launchUrl(androidOption.downloadUrl);
      } else {
        final bool canUseMarket = await _launchUrl(await androidOption.url);
        if (!canUseMarket) await _launchUrl(androidOption.downloadUrl);
      }
    }
  } else if (defaultTargetPlatform == TargetPlatform.iOS) {
    if (iOSOption == null) {
      throw Exception('The IOSUpgradeOption cannot be empty.');
    } else {
      await _launchUrl(await iOSOption.url);
    }
  } else {
    const String details =
        'The `openStore` method of the upgrade_util plugin currently only '
        'supports Android and iOS.';
    throw PlatformException(code: 'Unimplemented', details: details);
  }
}