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) {
    assert(androidOption != null, 'The androidOption cannot be empty.');
    if ((androidOption?.packageName).isBlank) {
      androidOption?.packageName =
          await methodChannel.invokeMethod<String>('getPackageName');
    }
    assert(
      !(androidOption?.packageName).isBlank,
      'The packageName cannot be empty.',
    );
    final bool canUseMarket = await _launchUrl(androidOption?.url);
    if (!canUseMarket && !(androidOption?.downloadUrl).isBlank) {
      await _launchUrl(androidOption?.downloadUrl);
    }
  } else if (defaultTargetPlatform == TargetPlatform.iOS) {
    assert(iOSOption != null, 'The iOSOption cannot be empty.');
    await _launchUrl(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);
  }
}