Skip to content
Snippets Groups Projects
Commit c64d509b authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '66-fix-pull-down-to-refresh-on-repartition-page' into 'master'

Resolve "Fix "pull down to refresh" on repartition page"

Closes #66

See merge request !62
parents f5c3be9e e7ad3663
No related branches found
No related tags found
1 merge request!62Resolve "Fix "pull down to refresh" on repartition page"
Pipeline #5811 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.1.0 app.versionName=0.1.1
app.versionCode=58 app.versionCode=59
Fix/improve refresh data.
Correction/amélioration de la mise à jour des données.
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/models/activity/activity.dart';
part 'activity_state.dart';
class ActivityCubit extends HydratedCubit<ActivityState> {
ActivityCubit()
: super(ActivityState(
currentActivity: Activity.createNull(),
));
void updateState(Activity activity) {
emit(ActivityState(
currentActivity: activity,
));
}
void refresh(BuildContext context) {
BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
}
@override
ActivityState? fromJson(Map<String, dynamic> json) {
final Activity currentActivity = json['currentActivity'] as Activity;
return ActivityState(
currentActivity: currentActivity,
);
}
@override
Map<String, dynamic>? toJson(ActivityState state) {
return <String, dynamic>{
'currentActivity': state.currentActivity.toJson(),
};
}
}
part of 'activity_cubit.dart';
@immutable
class ActivityState extends Equatable {
const ActivityState({
required this.currentActivity,
});
final Activity currentActivity;
@override
List<dynamic> get props => <dynamic>[
currentActivity,
];
}
...@@ -9,7 +9,6 @@ import 'package:hydrated_bloc/hydrated_bloc.dart'; ...@@ -9,7 +9,6 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:scrobbles/config/theme.dart'; import 'package:scrobbles/config/theme.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:scrobbles/cubit/nav_cubit_pages.dart'; import 'package:scrobbles/cubit/nav_cubit_pages.dart';
import 'package:scrobbles/cubit/nav_cubit_screens.dart'; import 'package:scrobbles/cubit/nav_cubit_screens.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart'; import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
...@@ -59,7 +58,6 @@ class MyApp extends StatelessWidget { ...@@ -59,7 +58,6 @@ class MyApp extends StatelessWidget {
BlocProvider<NavCubitPage>(create: (context) => NavCubitPage()), BlocProvider<NavCubitPage>(create: (context) => NavCubitPage()),
BlocProvider<NavCubitScreen>(create: (context) => NavCubitScreen()), BlocProvider<NavCubitScreen>(create: (context) => NavCubitScreen()),
BlocProvider<ThemeCubit>(create: (context) => ThemeCubit()), BlocProvider<ThemeCubit>(create: (context) => ThemeCubit()),
BlocProvider<ActivityCubit>(create: (context) => ActivityCubit()),
BlocProvider<GlobalSettingsCubit>(create: (context) => GlobalSettingsCubit()), BlocProvider<GlobalSettingsCubit>(create: (context) => GlobalSettingsCubit()),
BlocProvider<DataCountsByDayCubit>(create: (context) => DataCountsByDayCubit()), BlocProvider<DataCountsByDayCubit>(create: (context) => DataCountsByDayCubit()),
BlocProvider<DataCountsByHourCubit>(create: (context) => DataCountsByHourCubit()), BlocProvider<DataCountsByHourCubit>(create: (context) => DataCountsByHourCubit()),
......
import 'package:scrobbles/utils/tools.dart';
class Activity {
const Activity();
factory Activity.createNull() {
return const Activity();
}
void dump() {
printlog('');
printlog('## Current activity dump:');
printlog('');
printlog('$Activity:');
printlog('');
}
@override
String toString() {
return '$Activity(${toJson()})';
}
Map<String, dynamic>? toJson() {
return <String, dynamic>{};
}
}
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:unicons/unicons.dart'; import 'package:unicons/unicons.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/cubit/nav_cubit_pages.dart'; import 'package:scrobbles/cubit/nav_cubit_pages.dart';
import 'package:scrobbles/config/screen.dart'; import 'package:scrobbles/config/screen.dart';
import 'package:scrobbles/cubit/nav_cubit_screens.dart'; import 'package:scrobbles/cubit/nav_cubit_screens.dart';
...@@ -37,7 +46,16 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -37,7 +46,16 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
// refresh data // refresh data
menuActions.add(IconButton( menuActions.add(IconButton(
onPressed: () { onPressed: () {
BlocProvider.of<ActivityCubit>(context).refresh(context); BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
}, },
icon: const Icon(UniconsSolid.refresh), icon: const Icon(UniconsSolid.refresh),
)); ));
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart'; import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/discoveries.dart'; import 'package:scrobbles/ui/widgets/cards/discoveries.dart';
import 'package:scrobbles/ui/widgets/cards/new_artists.dart'; import 'package:scrobbles/ui/widgets/cards/new_artists.dart';
import 'package:scrobbles/ui/widgets/cards/new_tracks.dart'; import 'package:scrobbles/ui/widgets/cards/new_tracks.dart';
...@@ -13,7 +15,9 @@ class PageDiscoveries extends StatelessWidget { ...@@ -13,7 +15,9 @@ class PageDiscoveries extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () async { onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context); BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
}, },
child: ListView( child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4), padding: const EdgeInsets.symmetric(horizontal: 4),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart'; import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/statistics_global.dart'; import 'package:scrobbles/ui/widgets/cards/statistics_global.dart';
import 'package:scrobbles/ui/widgets/cards/statistics_recent.dart'; import 'package:scrobbles/ui/widgets/cards/statistics_recent.dart';
import 'package:scrobbles/ui/widgets/cards/timeline.dart'; import 'package:scrobbles/ui/widgets/cards/timeline.dart';
...@@ -14,7 +17,10 @@ class PageHome extends StatelessWidget { ...@@ -14,7 +17,10 @@ class PageHome extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () async { onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context); BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
}, },
child: ListView( child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4), padding: const EdgeInsets.symmetric(horizontal: 4),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart'; import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_day.dart'; import 'package:scrobbles/ui/widgets/cards/counts_by_day.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_hour.dart'; import 'package:scrobbles/ui/widgets/cards/counts_by_hour.dart';
import 'package:scrobbles/ui/widgets/cards/heatmap.dart'; import 'package:scrobbles/ui/widgets/cards/heatmap.dart';
...@@ -13,7 +15,9 @@ class PageStatistics extends StatelessWidget { ...@@ -13,7 +15,9 @@ class PageStatistics extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () async { onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context); BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
}, },
child: ListView( child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4), padding: const EdgeInsets.symmetric(horizontal: 4),
......
...@@ -3,7 +3,7 @@ description: Display scrobbles data and charts ...@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
publish_to: "none" publish_to: "none"
version: 0.1.0+58 version: 0.1.1+59
environment: environment:
sdk: "^3.0.0" sdk: "^3.0.0"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment