Skip to content

Commit bfd6f78

Browse files
improve loaders (#44)
* improve loading activity * improve edit profile and password screen loading * improve remove activity loader * improve logout loader * improve delete account loader * fix loader position * fix imports
1 parent 051a026 commit bfd6f78

15 files changed

Lines changed: 213 additions & 183 deletions

lib/presentation/common/activity/view_model/activity_item_like_view_model.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import 'package:hooks_riverpod/hooks_riverpod.dart';
2-
import '../../core/widgets/view_model/infinite_scroll_list_view_model.dart';
2+
33
import '../../../../data/repositories/activity_repository_impl.dart';
44
import '../../../../domain/entities/activity.dart';
55
import '../../core/enums/infinite_scroll_list.enum.dart';
66
import '../../core/utils/activity_utils.dart';
7+
import '../../core/widgets/view_model/infinite_scroll_list_view_model.dart';
78
import 'state/activity_item_like_state.dart';
89

910
/// Provider for the activity item like view model.

lib/presentation/common/activity/view_model/activity_item_view_model.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
33
import '../../user/view_model/profile_picture_view_model.dart';
4+
import '../../../my_activities/view_model/activity_list_view_model.dart';
45
import '../../../../data/repositories/activity_repository_impl.dart';
56
import '../../../../domain/entities/activity.dart';
67
import '../../../../main.dart';
@@ -37,6 +38,7 @@ class ActivityItemViewModel extends StateNotifier<ActivityItemState> {
3738
/// Retrieves the details of an activity.
3839
Future<Activity> getActivityDetails(Activity activity) async {
3940
try {
41+
ref.read(activityListViewModelProvider.notifier).setIsLoading(true);
4042
final activityDetails = await ref
4143
.read(activityRepositoryProvider)
4244
.getActivityById(id: activity.id);
@@ -49,6 +51,10 @@ class ActivityItemViewModel extends StateNotifier<ActivityItemState> {
4951

5052
/// Navigates to the activity details screen.
5153
void goToActivity(Activity activityDetails) {
54+
Future.delayed(const Duration(milliseconds: 500), () {
55+
ref.read(activityListViewModelProvider.notifier).setIsLoading(false);
56+
});
57+
5258
navigatorKey.currentState?.push(
5359
PageRouteBuilder(
5460
transitionDuration: const Duration(milliseconds: 500),

lib/presentation/common/activity/widgets/activity_item_user_informations.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import 'dart:typed_data';
22

33
import 'package:flutter/material.dart';
44
import 'package:hooks_riverpod/hooks_riverpod.dart';
5-
import '../../user/view_model/profile_picture_view_model.dart';
65

76
import '../../../../domain/entities/activity.dart';
87
import '../../core/utils/color_utils.dart';
98
import '../../core/utils/ui_utils.dart';
109
import '../../core/utils/user_utils.dart';
10+
import '../../user/view_model/profile_picture_view_model.dart';
1111
import '../view_model/activity_item_view_model.dart';
1212

1313
class ActivityItemUserInformation extends HookConsumerWidget {

lib/presentation/common/user/screens/profile_screen.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
3-
import '../view_model/profile_picture_view_model.dart';
43

54
import '../../../../domain/entities/activity.dart';
65
import '../../../../domain/entities/enum/friend_request_status.dart';
@@ -10,6 +9,7 @@ import '../../activity/widgets/activity_list.dart';
109
import '../../core/enums/infinite_scroll_list.enum.dart';
1110
import '../../core/utils/ui_utils.dart';
1211
import '../../core/utils/user_utils.dart';
12+
import '../view_model/profile_picture_view_model.dart';
1313
import '../view_model/profile_view_model.dart';
1414
import '../widgets/friend_request.dart';
1515

@@ -47,7 +47,7 @@ class ProfileScreen extends HookConsumerWidget {
4747
var activitiesStateProvider = ref.watch(activitiesDataFutureProvider(user));
4848

4949
return state.isLoading
50-
? Center(child: UIUtils.loader)
50+
? Expanded(child: Center(child: UIUtils.loader))
5151
: Scaffold(
5252
body: SafeArea(
5353
child: Column(
@@ -93,7 +93,8 @@ class ProfileScreen extends HookConsumerWidget {
9393
return widget;
9494
},
9595
loading: () {
96-
return Center(child: UIUtils.loader);
96+
return Expanded(
97+
child: Center(child: UIUtils.loader));
9798
},
9899
error: (error, stackTrace) {
99100
return Text('$error');
@@ -126,7 +127,8 @@ class ProfileScreen extends HookConsumerWidget {
126127
provider.fetchActivities);
127128
},
128129
loading: () {
129-
return Center(child: UIUtils.loader);
130+
return Expanded(
131+
child: Center(child: UIUtils.loader));
130132
},
131133
error: (error, stackTrace) {
132134
return Text('$error');

lib/presentation/community/screens/community_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class CommunityScreen extends HookConsumerWidget {
107107
: Container();
108108
},
109109
loading: () {
110-
return Center(child: UIUtils.loader);
110+
return Expanded(child: Center(child: UIUtils.loader));
111111
},
112112
error: (error, stackTrace) {
113113
return Text('$error');
@@ -134,7 +134,7 @@ class CommunityScreen extends HookConsumerWidget {
134134
);
135135
},
136136
loading: () {
137-
return Center(child: UIUtils.loader);
137+
return Expanded(child: Center(child: UIUtils.loader));
138138
},
139139
error: (error, stackTrace) {
140140
return Text('$error');

lib/presentation/community/screens/pending_requests_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class PendingRequestsScreen extends HookConsumerWidget {
2727
ref.watch(pendingRequestsDataFutureProvider);
2828

2929
return state.isLoading
30-
? Center(child: UIUtils.loader)
30+
? Expanded(child: Center(child: UIUtils.loader))
3131
: Scaffold(
3232
body: SafeArea(
3333
child: Column(children: [
@@ -46,7 +46,7 @@ class PendingRequestsScreen extends HookConsumerWidget {
4646
);
4747
},
4848
loading: () {
49-
return Center(child: UIUtils.loader);
49+
return Expanded(child: Center(child: UIUtils.loader));
5050
},
5151
error: (error, stackTrace) {
5252
return Text('$error');

lib/presentation/my_activities/screens/activity_details_screen.dart

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,20 @@ class ActivityDetailsScreen extends HookConsumerWidget {
6565
tooltip: 'Remove',
6666
onPressed: () {
6767
QuickAlert.show(
68-
context: context,
69-
type: QuickAlertType.confirm,
70-
title: AppLocalizations.of(context)!
71-
.ask_activity_removal,
72-
confirmBtnText:
73-
AppLocalizations.of(context)!.delete,
74-
cancelBtnText: AppLocalizations.of(context)!.cancel,
75-
confirmBtnColor: ColorUtils.red,
76-
onCancelBtnTap: () => Navigator.of(context).pop(),
77-
onConfirmBtnTap: () =>
78-
provider.removeActivity(displayedActivity),
79-
);
68+
context: context,
69+
type: QuickAlertType.confirm,
70+
title: AppLocalizations.of(context)!
71+
.ask_activity_removal,
72+
confirmBtnText:
73+
AppLocalizations.of(context)!.delete,
74+
cancelBtnText:
75+
AppLocalizations.of(context)!.cancel,
76+
confirmBtnColor: ColorUtils.red,
77+
onCancelBtnTap: () => Navigator.of(context).pop(),
78+
onConfirmBtnTap: () {
79+
Navigator.of(context).pop();
80+
provider.removeActivity(displayedActivity);
81+
});
8082
},
8183
icon: Icon(
8284
Icons.delete,

lib/presentation/my_activities/screens/activity_list_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ActivityListScreen extends HookConsumerWidget {
2727

2828
return Scaffold(
2929
body: isLoading
30-
? Center(child: UIUtils.loader)
30+
? Expanded(child: Center(child: UIUtils.loader))
3131
: SafeArea(
3232
child: Column(
3333
children: [
@@ -41,7 +41,7 @@ class ActivityListScreen extends HookConsumerWidget {
4141
);
4242
},
4343
loading: () {
44-
return Center(child: UIUtils.loader);
44+
return Expanded(child: Center(child: UIUtils.loader));
4545
},
4646
error: (error, stackTrace) {
4747
return Text('$error');

lib/presentation/my_activities/view_model/activity_details_view_model.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ class ActivityDetailsViewModel extends StateNotifier<ActivityDetailsState> {
6666
ActivityUtils.updateActivity(
6767
ref, activityWithoutLocations, ActivityUpdateActionEnum.remove);
6868

69-
navigatorKey.currentState?.pop();
7069
navigatorKey.currentState?.pop();
7170
ref.read(homeViewModelProvider.notifier).setCurrentIndex(Tabs.list.index);
7271
navigatorKey.currentState?.pushReplacement(

lib/presentation/my_activities/view_model/activity_list_view_model.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,8 @@ class ActivityListViewModel extends StateNotifier<ActivityListState> {
6969
),
7070
);
7171
}
72+
73+
void setIsLoading(bool isLoading) {
74+
state = state.copyWith(isLoading: isLoading);
75+
}
7276
}

0 commit comments

Comments
 (0)