From 7723bb717c44726b2acff297c9bcefd8a598c81f Mon Sep 17 00:00:00 2001 From: Alberto Ponces Date: Fri, 2 Sep 2022 00:10:10 +0100 Subject: [PATCH] feat: add empty cards in app listings of the home view --- assets/i18n/en.json | 2 + .../homeView/available_updates_card.dart | 65 ++++++++++++++----- .../widgets/homeView/installed_apps_card.dart | 60 ++++++++++++----- 3 files changed, 95 insertions(+), 32 deletions(-) diff --git a/assets/i18n/en.json b/assets/i18n/en.json index fb9f81f1..713f1655 100644 --- a/assets/i18n/en.json +++ b/assets/i18n/en.json @@ -10,6 +10,8 @@ "updatesSubtitle": "Updates", "patchedSubtitle": "Patched Applications", "updatesAvailable": "Updates Available", + "noUpdates": "No updates available", + "noInstallations": "No patched apps installed", "installed": "Installed", "notificationTitle": "ReVanced Manager was updated!", "notificationText": "Tap to open the app", diff --git a/lib/ui/widgets/homeView/available_updates_card.dart b/lib/ui/widgets/homeView/available_updates_card.dart index d00c5aec..660c91be 100644 --- a/lib/ui/widgets/homeView/available_updates_card.dart +++ b/lib/ui/widgets/homeView/available_updates_card.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_i18n/widgets/I18nText.dart'; import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/models/patched_application.dart'; import 'package:revanced_manager/ui/views/home/home_viewmodel.dart'; @@ -12,22 +13,52 @@ class AvailableUpdatesCard extends StatelessWidget { @override Widget build(BuildContext context) { - return ListView( - shrinkWrap: true, - padding: EdgeInsets.zero, - physics: const NeverScrollableScrollPhysics(), - children: apps - .map((app) => ApplicationItem( - icon: app.icon, - name: app.name, - patchDate: app.patchDate, - changelog: app.changelog, - isUpdatableApp: true, - onPressed: () => locator().navigateToPatcher( - app, - ), - )) - .toList(), - ); + return apps.isEmpty + ? Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Theme.of(context).colorScheme.primary, + ), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20), + child: Center( + child: Column( + children: [ + Icon( + Icons.update_disabled, + size: 40, + color: Theme.of(context).colorScheme.secondary, + ), + const SizedBox(height: 16), + I18nText( + 'homeView.noUpdates', + child: Text( + '', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1!.copyWith( + color: Theme.of(context).colorScheme.secondary), + ), + ) + ], + ), + ), + ) + : ListView( + shrinkWrap: true, + padding: EdgeInsets.zero, + physics: const NeverScrollableScrollPhysics(), + children: apps + .map((app) => ApplicationItem( + icon: app.icon, + name: app.name, + patchDate: app.patchDate, + changelog: app.changelog, + isUpdatableApp: true, + onPressed: () => + locator().navigateToPatcher( + app, + ), + )) + .toList(), + ); } } diff --git a/lib/ui/widgets/homeView/installed_apps_card.dart b/lib/ui/widgets/homeView/installed_apps_card.dart index abc3a021..6c10c1ca 100644 --- a/lib/ui/widgets/homeView/installed_apps_card.dart +++ b/lib/ui/widgets/homeView/installed_apps_card.dart @@ -1,5 +1,6 @@ import 'package:device_apps/device_apps.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/models/patched_application.dart'; import 'package:revanced_manager/ui/views/home/home_viewmodel.dart'; @@ -13,20 +14,49 @@ class InstalledAppsCard extends StatelessWidget { @override Widget build(BuildContext context) { - return ListView( - shrinkWrap: true, - padding: EdgeInsets.zero, - physics: const NeverScrollableScrollPhysics(), - children: apps - .map((app) => ApplicationItem( - icon: app.icon, - name: app.name, - patchDate: app.patchDate, - changelog: app.changelog, - isUpdatableApp: false, - onPressed: () => DeviceApps.openApp(app.packageName), - )) - .toList(), - ); + return apps.isEmpty + ? Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Theme.of(context).colorScheme.primary, + ), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20), + child: Center( + child: Column( + children: [ + Icon( + Icons.file_download_off, + size: 40, + color: Theme.of(context).colorScheme.secondary, + ), + const SizedBox(height: 16), + I18nText( + 'homeView.noInstallations', + child: Text( + '', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1!.copyWith( + color: Theme.of(context).colorScheme.secondary), + ), + ) + ], + ), + ), + ) + : ListView( + shrinkWrap: true, + padding: EdgeInsets.zero, + physics: const NeverScrollableScrollPhysics(), + children: apps + .map((app) => ApplicationItem( + icon: app.icon, + name: app.name, + patchDate: app.patchDate, + changelog: app.changelog, + isUpdatableApp: false, + onPressed: () => DeviceApps.openApp(app.packageName), + )) + .toList(), + ); } }