diff --git a/lib/pages/home.dart b/lib/pages/home.dart index a830b1a..1e74fcc 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -27,6 +27,7 @@ class NavigationPageItem { class _HomePageState extends State { List selectedIndexHistory = []; int prevAppCount = -1; + bool prevIsLoading = true; List pages = [ NavigationPageItem(tr('appsString'), Icons.apps, @@ -64,13 +65,15 @@ class _HomePageState extends State { } } - if (prevAppCount >= 0 && + if (!prevIsLoading && + prevAppCount >= 0 && appsProvider.apps.length > prevAppCount && selectedIndexHistory.isNotEmpty && selectedIndexHistory.last == 1) { switchToPage(0); } prevAppCount = appsProvider.apps.length; + prevIsLoading = appsProvider.loadingApps; return WillPopScope( child: Scaffold( diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 38f10fe..e585697 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -116,7 +116,7 @@ class AppsProvider with ChangeNotifier { foregroundStream = FGBGEvents.stream.asBroadcastStream(); foregroundSubscription = foregroundStream?.listen((event) async { isForeground = event == FGBGType.foreground; - if (isForeground) await loadApps(); + if (isForeground) await refreshInstallStatuses(); }); () async { // Load Apps into memory (in background, this is done later instead of in the constructor) @@ -747,6 +747,10 @@ class AppsProvider with ChangeNotifier { } loadingApps = false; notifyListeners(); + refreshInstallStatuses(); + } + + Future refreshInstallStatuses() async { if (await doesInstalledAppsPluginWork()) { List modifiedApps = []; for (var app in apps.values) {