From 4c4a9093e480bbc1fc4e479bcff2caaf87d28f16 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 26 Aug 2022 22:35:13 -0400 Subject: [PATCH] Added multiple apk support (user picks every time) --- lib/services/apps_provider.dart | 34 +++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/services/apps_provider.dart b/lib/services/apps_provider.dart index aa497a3..a5ec84e 100644 --- a/lib/services/apps_provider.dart +++ b/lib/services/apps_provider.dart @@ -73,8 +73,38 @@ class AppsProvider with ChangeNotifier { if (apps[appId] == null) { throw 'App not found'; } - StreamedResponse response = await Client() - .send(Request('GET', Uri.parse(apps[appId]!.app.apkUrls[0]))); + String apkUrl = apps[appId]!.app.apkUrls.last; + if (apps[appId]!.app.apkUrls.length > 1) { + await showDialog( + context: context, + builder: (BuildContext ctx) { + return AlertDialog( + scrollable: true, + title: const Text('Pick an APK'), + content: Column(children: [ + Text( + '${apps[appId]!.app.name} has more than one package - pick one.'), + ...apps[appId]!.app.apkUrls.map((u) => ListTile( + title: Text(Uri.parse(u).pathSegments.last), + leading: Radio( + value: u, + groupValue: apkUrl, + onChanged: (String? val) { + apkUrl = val!; + }))) + ]), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Continue')) + ], + ); + }); + } + StreamedResponse response = + await Client().send(Request('GET', Uri.parse(apkUrl))); File downloadFile = File('${(await getExternalStorageDirectory())!.path}/$appId.apk'); if (downloadFile.existsSync()) {