forked from eatvio/eatvio_app
Added logic for NameScreen
This commit is contained in:
@@ -16,8 +16,7 @@ class NameBloc extends Bloc<NameEvent, NameState> {
|
||||
Emitter<NameState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(
|
||||
valueController: TextEditingController(),
|
||||
valueController1: TextEditingController(),
|
||||
valueController2: TextEditingController()));
|
||||
firstNameController: TextEditingController(),
|
||||
lastNameController: TextEditingController()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Object?> 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,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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<NameBloc>(
|
||||
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<NameScreen> {
|
||||
Text("first_name".tr, style: theme.textTheme.bodyLarge),
|
||||
SizedBox(height: 3.v),
|
||||
BlocSelector<NameBloc, NameState, TextEditingController?>(
|
||||
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<NameBloc, NameState, TextEditingController?>(
|
||||
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<NameBloc, NameState>(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<NameScreen> {
|
||||
onTapArrowLeft(BuildContext context) {
|
||||
NavigatorService.goBack();
|
||||
}
|
||||
|
||||
/// Navigates to the weightScreen when the action is triggered.
|
||||
navigateToGender(BuildContext context) {
|
||||
NavigatorService.pushNamed(
|
||||
AppRoutes.genderScreen,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user