import 'package:eatvio_app/features/registration/models/user_registration_model.dart'; import 'package:eatvio_app/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart'; import 'package:eatvio_app/generated/l10n.dart'; import 'package:eatvio_app/core/widgets/custom_text_form_field.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class BodyCircumferencesScreen extends StatefulWidget { final UserRegistrationSheet sheet; const BodyCircumferencesScreen({super.key, required this.sheet}); @override State createState() => _BodyCircumferencesScreenState(); } class _BodyCircumferencesScreenState extends State { final digitsOnly = FilteringTextInputFormatter.digitsOnly; final chestCircumferenceController = TextEditingController(); final waistCircumferenceController = TextEditingController(); final hipCircumferenceController = TextEditingController(); final chestFocus = FocusNode(); @override void initState() { super.initState(); if (widget.sheet.chestCircumference != 0) chestCircumferenceController.text = widget.sheet.chestCircumference.toString(); if (widget.sheet.waistCircumference != 0) waistCircumferenceController.text = widget.sheet.waistCircumference.toString(); if (widget.sheet.hipCircumference != 0) hipCircumferenceController.text = widget.sheet.hipCircumference.toString(); chestFocus.requestFocus(); } @override Widget build(BuildContext context) { final s = S.of(context); return SingleChildScrollView( padding: EdgeInsets.only(bottom: 80, left: 16, right: 16, top: 16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(s.chest_circumference + ' (не обязательно)'), SizedBox(height: 4), CustomTextFormField( inputFormatters: [digitsOnly], autofocus: true, focusNode: chestFocus, controller: chestCircumferenceController, hintText: '90', onChanged: (value) { final registrationCubit = context.read(); registrationCubit.updateSheet(registrationCubit.state.sheet.copyWith(chestCircumference: int.parse(value))); }, ), SizedBox(height: 16), Text(s.waist_circumference + ' (не обязательно)'), SizedBox(height: 4), CustomTextFormField( inputFormatters: [digitsOnly], controller: waistCircumferenceController, hintText: "60", onChanged: (value) { final registrationCubit = context.read(); registrationCubit.updateSheet(registrationCubit.state.sheet.copyWith(waistCircumference: int.parse(value))); }, ), SizedBox(height: 16), Text(s.hip_circumference + ' (не обязательно)'), SizedBox(height: 4), CustomTextFormField( inputFormatters: [digitsOnly], controller: hipCircumferenceController, hintText: '90', textInputAction: TextInputAction.done, onChanged: (value) { final registrationCubit = context.read(); registrationCubit.updateSheet(registrationCubit.state.sheet.copyWith(hipCircumference: int.parse(value))); }, ), ], ), ); } }