Skip to content

Commit b6db570

Browse files
authored
Merge pull request #14 from AbdoWa7eed/feature/profile_completion
Refactor ProfileCompletionCubit and Update Dependency Injection
2 parents 6b4601f + 6f18060 commit b6db570

File tree

12 files changed

+48
-42
lines changed

12 files changed

+48
-42
lines changed

lib/core/di/di.config.dart

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/core/routes/app_routes.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import 'package:flutter/material.dart';
2-
import 'package:flutter_bloc/flutter_bloc.dart';
32
import 'package:go_router/go_router.dart';
43
import 'package:graduation_project/core/widgets/slide_transition.dart';
54
import 'package:graduation_project/features/auth/presentation/views/login_view.dart';
65
import 'package:graduation_project/features/auth/presentation/views/register_view.dart';
76
import 'package:graduation_project/features/onboarding/presentation/views/onboarding_view.dart';
8-
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_cubit.dart';
97
import 'package:graduation_project/features/profile_completion/presentation/views/birth_year_selection_view.dart';
108
import 'package:graduation_project/features/profile_completion/presentation/views/gender_selection_view.dart';
119
import 'package:graduation_project/features/profile_completion/presentation/views/setup_user_info_view.dart';

lib/core/routes/app_routes.main.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,16 @@ abstract class RouteGenerator {
5252
GoRoute(
5353
path: Routes.genderSelectionRoute,
5454
pageBuilder: (context, state) {
55-
final cubit = state.extra as ProfileCompletionCubit;
5655
return PageSlideTransition(
57-
child: BlocProvider.value(
58-
value: cubit,
59-
child: const GenderSelectionView(),
60-
),
56+
child: const GenderSelectionView(),
6157
);
6258
},
6359
),
6460
GoRoute(
6561
path: Routes.birthYearSelectionRoute,
6662
pageBuilder: (context, state) {
67-
final cubit = state.extra as ProfileCompletionCubit;
6863
return PageSlideTransition(
69-
child: BlocProvider.value(
70-
value: cubit,
71-
child: const BirthYearSelectionView(),
72-
),
64+
child: const BirthYearSelectionView(),
7365
);
7466
},
7567
),

lib/features/profile_completion/presentation/cubit/profile_completion_cubit.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:bloc/bloc.dart';
33
import 'package:graduation_project/core/utils/enums.dart';
44
import 'package:injectable/injectable.dart';
55
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_state.dart';
6-
@injectable
6+
@lazySingleton
77
class ProfileCompletionCubit extends Cubit<ProfileCompletionState> {
88
ProfileCompletionCubit() : super(const ProfileCompletionState());
99

lib/features/profile_completion/presentation/views/birth_year_selection_view.dart

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_bloc/flutter_bloc.dart';
3+
import 'package:graduation_project/core/di/di.dart';
24
import 'package:graduation_project/core/res/strings_manager.dart';
35
import 'package:graduation_project/core/res/values_manager.dart';
46
import 'package:graduation_project/core/widgets/custom_app_bar.dart';
7+
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_cubit.dart';
58
import 'package:graduation_project/features/profile_completion/presentation/widgets/birth_year_selection_view_body.dart';
69

710
class BirthYearSelectionView extends StatelessWidget {
811
const BirthYearSelectionView({super.key});
912

1013
@override
1114
Widget build(BuildContext context) {
12-
return Scaffold(
13-
appBar: CustomAppBar(title: AppStrings.completeProfile),
14-
body: SafeArea(
15-
child: Padding(
16-
padding: const EdgeInsetsDirectional.only(
17-
start: AppPadding.p20,
18-
end: AppPadding.p20,
19-
bottom: AppPadding.p20,
15+
return BlocProvider.value(
16+
value: getIt<ProfileCompletionCubit>(),
17+
child: Scaffold(
18+
appBar: CustomAppBar(title: AppStrings.completeProfile),
19+
body: SafeArea(
20+
child: Padding(
21+
padding: const EdgeInsetsDirectional.only(
22+
start: AppPadding.p20,
23+
end: AppPadding.p20,
24+
bottom: AppPadding.p20,
25+
),
26+
child: BirthYearSelectionViewBody(),
2027
),
21-
child: BirthYearSelectionViewBody(),
2228
),
2329
),
2430
);

lib/features/profile_completion/presentation/views/gender_selection_view.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_bloc/flutter_bloc.dart';
3+
import 'package:graduation_project/core/di/di.dart';
24
import 'package:graduation_project/core/res/strings_manager.dart';
35
import 'package:graduation_project/core/res/values_manager.dart';
46
import 'package:graduation_project/core/widgets/custom_app_bar.dart';
7+
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_cubit.dart';
58
import 'package:graduation_project/features/profile_completion/presentation/widgets/gender_selection_view_body.dart';
69

710
class GenderSelectionView extends StatelessWidget {
811
const GenderSelectionView({super.key});
912

1013
@override
1114
Widget build(BuildContext context) {
12-
return Scaffold(
13-
appBar: CustomAppBar(title: AppStrings.completeProfile),
14-
body: Padding(
15-
padding: const EdgeInsetsDirectional.only(
16-
start: AppPadding.p20,
17-
end: AppPadding.p20,
18-
bottom: AppPadding.p20,
15+
return BlocProvider.value(
16+
value: getIt<ProfileCompletionCubit>(),
17+
child: Scaffold(
18+
appBar: CustomAppBar(title: AppStrings.completeProfile),
19+
body: Padding(
20+
padding: const EdgeInsetsDirectional.only(
21+
start: AppPadding.p20,
22+
end: AppPadding.p20,
23+
bottom: AppPadding.p20,
24+
),
25+
child: GenderSelectionViewBody(),
1926
),
20-
child: GenderSelectionViewBody(),
2127
),
2228
);
2329
}

lib/features/profile_completion/presentation/views/setup_user_info_view.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
3+
import 'package:graduation_project/core/di/di.dart';
34
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_cubit.dart';
4-
import 'package:get_it/get_it.dart';
55
import 'package:graduation_project/features/profile_completion/presentation/widgets/compelete_user_info/complete_user_info_view_body.dart';
66

77
class CompleteUserInfoView extends StatelessWidget {
@@ -10,7 +10,7 @@ class CompleteUserInfoView extends StatelessWidget {
1010
@override
1111
Widget build(BuildContext context) {
1212
return BlocProvider(
13-
create: (context) => GetIt.I<ProfileCompletionCubit>(),
13+
create: (context) => getIt<ProfileCompletionCubit>(),
1414
child: const Scaffold(body: SafeArea(child: CompleteUserInfoViewBody())),
1515
);
1616
}

lib/features/profile_completion/presentation/widgets/birth_year_selection_view_body.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
3-
import 'package:go_router/go_router.dart';
43
import 'package:graduation_project/core/res/strings_manager.dart';
54
import 'package:graduation_project/core/routes/app_routes.dart';
65
import 'package:graduation_project/core/widgets/custom_elevated_button.dart';
76
import 'package:graduation_project/core/widgets/page_intro_text_widget.dart';
87
import 'package:graduation_project/features/profile_completion/presentation/cubit/profile_completion_cubit.dart';
98
import 'package:graduation_project/features/profile_completion/presentation/widgets/year_picker_widget.dart';
9+
import 'package:graduation_project/core/utils/extensions.dart';
1010

1111
class BirthYearSelectionViewBody extends StatelessWidget {
1212
const BirthYearSelectionViewBody({super.key});
@@ -22,14 +22,19 @@ class BirthYearSelectionViewBody extends StatelessWidget {
2222
),
2323
YearPickerWidget(
2424
onYearSelected: (selectedYear) {
25-
context.read<ProfileCompletionCubit>().updateBirthYear(selectedYear);
25+
context.read<ProfileCompletionCubit>().updateBirthYear(
26+
selectedYear,
27+
);
2628
},
2729
),
2830
CustomElevatedButton(
2931
text: AppStrings.next,
3032
onPressed: () {
3133
final cubit = context.read<ProfileCompletionCubit>();
32-
context.push(Routes.heightSelectionRoute, extra: cubit);
34+
context.popAllThenPush(
35+
Routes.heightSelectionRoute,
36+
extra: {'gender': cubit.state.profile.gender},
37+
);
3338
},
3439
),
3540
],

lib/features/profile_completion/presentation/widgets/compelete_user_info/complete_user_info_view_body.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class _CompleteUserInfoViewBodyState extends State<CompleteUserInfoViewBody> {
8080
lastName: _lastNameController.text.trim(),
8181
);
8282

83-
context.push(Routes.genderSelectionRoute, extra: cubit);
83+
context.push(Routes.genderSelectionRoute);
8484

8585
Logger.success("Complete profile form is valid");
8686
} else {

lib/features/profile_completion/presentation/widgets/gender_selection_view_body.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ class GenderSelectionViewBody extends StatelessWidget {
6060
}
6161

6262
void _submit(BuildContext context) {
63-
final cubit = context.read<ProfileCompletionCubit>();
64-
context.push(Routes.birthYearSelectionRoute, extra: cubit);
63+
context.push(Routes.birthYearSelectionRoute);
6564
}
6665
}

0 commit comments

Comments
 (0)