From 2138afec4a9187e733ed214fbc287fde3ff93359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Tue, 14 Nov 2023 18:45:21 +0100 Subject: [PATCH] Refresh data on pull down --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/39.txt | 1 + .../metadata/android/fr-FR/changelogs/39.txt | 1 + lib/ui/screens/discoveries.dart | 25 ++++++++----- lib/ui/screens/home.dart | 37 +++++++++++-------- lib/ui/screens/statistics.dart | 29 +++++++++------ lib/ui/skeleton.dart | 15 +++++--- pubspec.yaml | 2 +- 8 files changed, 71 insertions(+), 43 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/39.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/39.txt diff --git a/android/gradle.properties b/android/gradle.properties index 604fc08..c8bbff9 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.38 -app.versionCode=38 +app.versionName=0.0.39 +app.versionCode=39 diff --git a/fastlane/metadata/android/en-US/changelogs/39.txt b/fastlane/metadata/android/en-US/changelogs/39.txt new file mode 100644 index 0000000..d69d188 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/39.txt @@ -0,0 +1 @@ +Update data on page pull down. diff --git a/fastlane/metadata/android/fr-FR/changelogs/39.txt b/fastlane/metadata/android/fr-FR/changelogs/39.txt new file mode 100644 index 0000000..4abfdd7 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/39.txt @@ -0,0 +1 @@ +Mise à jour des données en tirant la page vers le bas. diff --git a/lib/ui/screens/discoveries.dart b/lib/ui/screens/discoveries.dart index d93e921..7a039c7 100644 --- a/lib/ui/screens/discoveries.dart +++ b/lib/ui/screens/discoveries.dart @@ -3,20 +3,27 @@ import 'package:flutter/material.dart'; import 'package:scrobbles/ui/widgets/cards/discoveries.dart'; class ScreenDiscoveries extends StatelessWidget { - const ScreenDiscoveries({super.key}); + final Function() notifyParent; + + const ScreenDiscoveries({super.key, required this.notifyParent}); @override Widget build(BuildContext context) { return Material( color: Theme.of(context).colorScheme.background, - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 4), - physics: const BouncingScrollPhysics(), - children: <Widget>[ - const SizedBox(height: 8), - const CardDiscoveries(), - const SizedBox(height: 36), - ], + child: RefreshIndicator( + onRefresh: () async { + this.notifyParent(); + }, + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 4), + physics: const BouncingScrollPhysics(), + children: <Widget>[ + const SizedBox(height: 8), + const CardDiscoveries(), + const SizedBox(height: 36), + ], + ), ), ); } diff --git a/lib/ui/screens/home.dart b/lib/ui/screens/home.dart index 7bf2d94..4960e2e 100644 --- a/lib/ui/screens/home.dart +++ b/lib/ui/screens/home.dart @@ -6,26 +6,33 @@ import 'package:scrobbles/ui/widgets/cards/timeline.dart'; import 'package:scrobbles/ui/widgets/cards/top_artists.dart'; class ScreenHome extends StatelessWidget { - const ScreenHome({super.key}); + final Function() notifyParent; + + const ScreenHome({super.key, required this.notifyParent}); @override Widget build(BuildContext context) { return Material( color: Theme.of(context).colorScheme.background, - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 4), - physics: const BouncingScrollPhysics(), - children: <Widget>[ - const SizedBox(height: 8), - const CardStatisticsGlobal(), - const SizedBox(height: 6), - const CardStatisticsRecent(), - const SizedBox(height: 6), - const CardTimeline(), - const SizedBox(height: 6), - const CardTopArtists(), - const SizedBox(height: 36), - ], + child: RefreshIndicator( + onRefresh: () async { + this.notifyParent(); + }, + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 4), + physics: const BouncingScrollPhysics(), + children: <Widget>[ + const SizedBox(height: 8), + const CardStatisticsGlobal(), + const SizedBox(height: 6), + const CardStatisticsRecent(), + const SizedBox(height: 6), + const CardTimeline(), + const SizedBox(height: 6), + const CardTopArtists(), + const SizedBox(height: 36), + ], + ), ), ); } diff --git a/lib/ui/screens/statistics.dart b/lib/ui/screens/statistics.dart index 6f15f7e..1dfffd1 100644 --- a/lib/ui/screens/statistics.dart +++ b/lib/ui/screens/statistics.dart @@ -4,22 +4,29 @@ import 'package:scrobbles/ui/widgets/cards/counts_by_day.dart'; import 'package:scrobbles/ui/widgets/cards/counts_by_hour.dart'; class ScreenStatistics extends StatelessWidget { - const ScreenStatistics({super.key}); + final Function() notifyParent; + + const ScreenStatistics({super.key, required this.notifyParent}); @override Widget build(BuildContext context) { return Material( color: Theme.of(context).colorScheme.background, - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 4), - physics: const BouncingScrollPhysics(), - children: <Widget>[ - const SizedBox(height: 8), - const CardCountsByDay(), - const SizedBox(height: 6), - const CardCountsByHour(), - const SizedBox(height: 36), - ], + child: RefreshIndicator( + onRefresh: () async { + this.notifyParent(); + }, + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 4), + physics: const BouncingScrollPhysics(), + children: <Widget>[ + const SizedBox(height: 8), + const CardCountsByDay(), + const SizedBox(height: 6), + const CardCountsByHour(), + const SizedBox(height: 36), + ], + ), ), ); } diff --git a/lib/ui/skeleton.dart b/lib/ui/skeleton.dart index 46c449c..5ff784f 100644 --- a/lib/ui/skeleton.dart +++ b/lib/ui/skeleton.dart @@ -20,10 +20,10 @@ class SkeletonScreen extends StatefulWidget { class _SkeletonScreenState extends State<SkeletonScreen> { @override Widget build(BuildContext context) { - const List<Widget> pageNavigation = <Widget>[ - const ScreenHome(), - const ScreenDiscoveries(), - const ScreenStatistics(), + List<Widget> pageNavigation = <Widget>[ + ScreenHome(notifyParent: refresh), + ScreenDiscoveries(notifyParent: refresh), + ScreenStatistics(notifyParent: refresh), const ScreenSettings(), ]; @@ -53,6 +53,11 @@ class _SkeletonScreenState extends State<SkeletonScreen> { } refresh() { - setState(() {}); + void rebuild(Element el) { + el.markNeedsBuild(); + el.visitChildren(rebuild); + } + + (context as Element).visitChildren(rebuild); } } diff --git a/pubspec.yaml b/pubspec.yaml index 106d606..2a55e38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Display scrobbles data and charts publish_to: 'none' -version: 0.0.38+38 +version: 0.0.39+39 environment: sdk: '^3.0.0' -- GitLab