From f0ee09dfc830b991c90d039344ac2bd5428fe607 Mon Sep 17 00:00:00 2001 From: maxxkim Date: Mon, 25 Dec 2023 12:29:54 +0300 Subject: [PATCH] Added logic for NameScreen --- .../name_screen/bloc/name_bloc.dart | 5 +- .../name_screen/bloc/name_state.dart | 26 +++--- .../name_screen/models/name_model.dart | 2 +- lib/presentation/name_screen/name_screen.dart | 81 +++++++------------ 4 files changed, 44 insertions(+), 70 deletions(-) diff --git a/lib/presentation/name_screen/bloc/name_bloc.dart b/lib/presentation/name_screen/bloc/name_bloc.dart index 7611e222..00baf316 100644 --- a/lib/presentation/name_screen/bloc/name_bloc.dart +++ b/lib/presentation/name_screen/bloc/name_bloc.dart @@ -16,8 +16,7 @@ class NameBloc extends Bloc { Emitter emit, ) async { emit(state.copyWith( - valueController: TextEditingController(), - valueController1: TextEditingController(), - valueController2: TextEditingController())); + firstNameController: TextEditingController(), + lastNameController: TextEditingController())); } } diff --git a/lib/presentation/name_screen/bloc/name_state.dart b/lib/presentation/name_screen/bloc/name_state.dart index d729b067..b3e0980b 100644 --- a/lib/presentation/name_screen/bloc/name_state.dart +++ b/lib/presentation/name_screen/bloc/name_state.dart @@ -5,37 +5,31 @@ part of 'name_bloc.dart'; /// Represents the state of Name in the application. class NameState extends Equatable { NameState({ - this.valueController, - this.valueController1, - this.valueController2, + this.firstNameController, + this.lastNameController, this.nameModelObj, }); - TextEditingController? valueController; + TextEditingController? firstNameController; - TextEditingController? valueController1; - - TextEditingController? valueController2; + TextEditingController? lastNameController; NameModel? nameModelObj; @override List get props => [ - valueController, - valueController1, - valueController2, + firstNameController, + lastNameController, nameModelObj, ]; NameState copyWith({ - TextEditingController? valueController, - TextEditingController? valueController1, - TextEditingController? valueController2, + TextEditingController? firstNameController, + TextEditingController? lastNameController, NameModel? nameModelObj, }) { return NameState( - valueController: valueController ?? this.valueController, - valueController1: valueController1 ?? this.valueController1, - valueController2: valueController2 ?? this.valueController2, + firstNameController: firstNameController ?? this.firstNameController, + lastNameController: lastNameController ?? this.lastNameController, nameModelObj: nameModelObj ?? this.nameModelObj, ); } diff --git a/lib/presentation/name_screen/models/name_model.dart b/lib/presentation/name_screen/models/name_model.dart index ac2d23d1..6fa44b07 100644 --- a/lib/presentation/name_screen/models/name_model.dart +++ b/lib/presentation/name_screen/models/name_model.dart @@ -6,8 +6,8 @@ import 'package:eatvio_app/data/models/userRegistrationModel/user_registration_m /// This class defines the variables used in the [name_screen], /// and is typically used to hold data that is passed between different parts of the application. class NameModel extends Equatable { - NameModel({required this.userRegistrationSheet}); UserRegistrationSheet userRegistrationSheet; + NameModel({required this.userRegistrationSheet}); NameModel copyWith({UserRegistrationSheet? userRegistrationSheet}) { return NameModel( diff --git a/lib/presentation/name_screen/name_screen.dart b/lib/presentation/name_screen/name_screen.dart index ead28a54..7d0eb39d 100644 --- a/lib/presentation/name_screen/name_screen.dart +++ b/lib/presentation/name_screen/name_screen.dart @@ -7,44 +7,20 @@ import 'package:eatvio_app/widgets/app_bar/custom_app_bar.dart'; import 'package:eatvio_app/widgets/next_step_button.dart'; import 'package:eatvio_app/data/models/userRegistrationModel/user_registration_model.dart'; import 'package:eatvio_app/widgets/custom_text_form_field.dart'; -import 'package:eatvio_app/data/models/userRegistrationModel/user_registration_model.dart'; import 'package:flutter/material.dart'; class NameScreen extends StatefulWidget { const NameScreen({Key? key}) : super(key: key); static Widget builder(BuildContext context) { + final sheet = + ModalRoute.of(context)!.settings.arguments as UserRegistrationSheet; return BlocProvider( - create: (context) => NameBloc(NameState( - nameModelObj: NameModel( - userRegistrationSheet: UserRegistrationSheet( - firstName: '1', - lastName: '1', - email: '1', - password: '1', - passwordConfirmation: '1', - termsAccepted: true, - birthdate: DateTime.now(), - gender: '1', - country: '1', - city: '1', - lang: '1', - weight: 1, - height: 1, - chestCircumference: 1, - waistCircumference: 1, - hipCircumference: 1, - bloodPressureUp: 1, - bloodPressureDown: 1, - hasHypo: false, - hasHyper: false, - aboutAllergy: '1', - aboutTakingPils: '1', - aboutSportHobbies: '1', - favoriteFoods: '1', - unfavoriteFoods: '1', - additionalInfo: '1')))) - ..add(NameInitialEvent()), + create: (context) => NameBloc( + NameState( + nameModelObj: NameModel(userRegistrationSheet: sheet), + ), + )..add(NameInitialEvent()), child: NameScreen()); } @@ -87,30 +63,42 @@ class _NameScreenState extends State { Text("first_name".tr, style: theme.textTheme.bodyLarge), SizedBox(height: 3.v), BlocSelector( - selector: (state) => state.valueController, - builder: (context, valueController) { + selector: (state) => state.firstNameController, + builder: (context, firstNameController) { return CustomTextFormField( - controller: valueController, + controller: firstNameController, textInputAction: TextInputAction.done); }), SizedBox(height: 19.v), Text("last_name".tr, style: theme.textTheme.bodyLarge), SizedBox(height: 5.v), BlocSelector( - selector: (state) => state.valueController1, - builder: (context, valueController1) { + selector: (state) => state.lastNameController, + builder: (context, lastNameController) { return CustomTextFormField( - controller: valueController1, + controller: lastNameController, ); }), SizedBox(height: 21.v), Spacer(), - NextStepButton( - text: "continue".tr.toUpperCase(), - buttonStyle: CustomButtonStyles.outlinePrimaryTL15, - onPressed: () { - navigateToGender(context); - }), + BlocBuilder(builder: (context, state) { + return NextStepButton( + text: "continue".tr.toUpperCase(), + margin: EdgeInsets.only( + left: 16.h, right: 16.h, bottom: 50.v), + buttonStyle: CustomButtonStyles.outlinePrimaryTL15, + onPressed: () { + UserRegistrationSheet sheet = + state.nameModelObj!.userRegistrationSheet; + sheet.firstName = state.firstNameController!.text; + sheet.lastName = state.lastNameController!.text; + Navigator.pushNamed( + context, + AppRoutes.genderScreen, + arguments: sheet, + ); + }); + }), SizedBox(height: 17.v), ])))); } @@ -133,11 +121,4 @@ class _NameScreenState extends State { onTapArrowLeft(BuildContext context) { NavigatorService.goBack(); } - - /// Navigates to the weightScreen when the action is triggered. - navigateToGender(BuildContext context) { - NavigatorService.pushNamed( - AppRoutes.genderScreen, - ); - } }