From 6d0cac58944ab149487ce52e20f87f092d0af2c5 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Thu, 15 Dec 2022 18:57:06 -0500 Subject: [PATCH] Bugfix for switching pages while downloading #150 --- lib/main.dart | 3 +++ lib/pages/add_app.dart | 4 +++- lib/pages/app.dart | 5 ++++- lib/pages/apps.dart | 5 +++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index d2cff60..7785396 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -31,6 +31,8 @@ const supportedLocales = [Locale('en'), Locale('zh'), Locale('it')]; const fallbackLocale = Locale('en'); const localeDir = 'assets/translations'; +final globalNavigatorKey = GlobalKey(); + Future loadTranslations() async { // See easy_localization/issues/210 await EasyLocalizationController.initEasyLocation(); @@ -237,6 +239,7 @@ class _ObtainiumState extends State { localizationsDelegates: context.localizationDelegates, supportedLocales: context.supportedLocales, locale: context.locale, + navigatorKey: globalNavigatorKey, theme: ThemeData( useMaterial3: true, colorScheme: settingsProvider.theme == ThemeSettings.dark diff --git a/lib/pages/add_app.dart b/lib/pages/add_app.dart index 450475f..f206efd 100644 --- a/lib/pages/add_app.dart +++ b/lib/pages/add_app.dart @@ -5,6 +5,7 @@ import 'package:obtainium/components/custom_app_bar.dart'; import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/components/generated_form_modal.dart'; import 'package:obtainium/custom_errors.dart'; +import 'package:obtainium/main.dart'; import 'package:obtainium/pages/app.dart'; import 'package:obtainium/pages/import_export.dart'; import 'package:obtainium/providers/apps_provider.dart'; @@ -108,7 +109,8 @@ class _AddAppPageState extends State { } app.preferredApkIndex = app.apkUrls.indexOf(apkUrl); // ignore: use_build_context_synchronously - var downloadedApk = await appsProvider.downloadApp(app, context); + var downloadedApk = await appsProvider.downloadApp( + app, globalNavigatorKey.currentContext); app.id = downloadedApk.appId; } if (appsProvider.apps.containsKey(app.id)) { diff --git a/lib/pages/app.dart b/lib/pages/app.dart index 73bd34b..ed8415d 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:obtainium/components/generated_form_modal.dart'; import 'package:obtainium/custom_errors.dart'; +import 'package:obtainium/main.dart'; import 'package:obtainium/providers/apps_provider.dart'; import 'package:obtainium/providers/settings_provider.dart'; import 'package:obtainium/providers/source_provider.dart'; @@ -250,7 +251,9 @@ class _AppPageState extends State { appsProvider .downloadAndInstallLatestApps( [app!.app.id], - context).then((res) { + globalNavigatorKey + .currentContext).then( + (res) { if (res.isNotEmpty && mounted) { Navigator.of(context).pop(); } diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 2cadceb..4c34dd8 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -5,6 +5,7 @@ import 'package:obtainium/components/custom_app_bar.dart'; import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/components/generated_form_modal.dart'; import 'package:obtainium/custom_errors.dart'; +import 'package:obtainium/main.dart'; import 'package:obtainium/pages/app.dart'; import 'package:obtainium/providers/apps_provider.dart'; import 'package:obtainium/providers/settings_provider.dart'; @@ -462,8 +463,8 @@ class AppsPageState extends State { trackOnlyUpdateIdsAllOrSelected); } appsProvider - .downloadAndInstallLatestApps( - toInstall, context) + .downloadAndInstallLatestApps(toInstall, + globalNavigatorKey.currentContext) .catchError((e) { showError(e, context); });