From 78141998f48a45c31048ade1b07f5aafe33dc1dd Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 21 Apr 2023 15:54:17 -0400 Subject: [PATCH] Attempt additional fix for #201 --- lib/pages/add_app.dart | 3 ++- lib/providers/apps_provider.dart | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/pages/add_app.dart b/lib/pages/add_app.dart index f4f6c0e..27d37c2 100644 --- a/lib/pages/add_app.dart +++ b/lib/pages/add_app.dart @@ -127,7 +127,8 @@ class _AddAppPageState extends State { if (apkUrl == null) { throw ObtainiumError(tr('cancelled')); } - app.preferredApkIndex = app.apkUrls.indexOf(apkUrl); + app.preferredApkIndex = + app.apkUrls.map((e) => e.value).toList().indexOf(apkUrl.value); // ignore: use_build_context_synchronously var downloadedApk = await appsProvider.downloadApp( app, globalNavigatorKey.currentContext); diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 22e08cc..aa6719b 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -304,7 +304,8 @@ class AppsProvider with ChangeNotifier { Future?> confirmApkUrl( App app, BuildContext? context) async { // If the App has more than one APK, the user should pick one (if context provided) - MapEntry? apkUrl = app.apkUrls[app.preferredApkIndex]; + MapEntry? apkUrl = + app.apkUrls[app.preferredApkIndex >= 0 ? app.preferredApkIndex : 0]; // get device supported architecture List archs = (await DeviceInfoPlugin().androidInfo).supportedAbis; @@ -365,8 +366,13 @@ class AppsProvider with ChangeNotifier { apkUrl = await confirmApkUrl(apps[id]!.app, context); } if (apkUrl != null) { - int urlInd = apps[id]!.app.apkUrls.indexOf(apkUrl); - if (urlInd != apps[id]!.app.preferredApkIndex) { + int urlInd = apps[id]! + .app + .apkUrls + .map((e) => e.value) + .toList() + .indexOf(apkUrl.value); + if (urlInd >= 0 && urlInd != apps[id]!.app.preferredApkIndex) { apps[id]!.app.preferredApkIndex = urlInd; await saveApps([apps[id]!.app]); }