diff --git a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart index 4425e5fc..98c218dd 100644 --- a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart +++ b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart @@ -20,7 +20,7 @@ class DiaryEditBloc extends Bloc { DiaryEditInitialEvent event, Emitter emit, ) async { - try { + /*try { /*final box = await Hive.openBox('token'); final token = box.get('token');*/ final token = @@ -36,28 +36,30 @@ class DiaryEditBloc extends Bloc { final data = jsonDecode(response.body); // Проверка наличия ключевых полей в JSON if (data is Map && data.containsKey('id')) { - // Все ключевые поля присутствуют, продолжаем обработку - if (state is DiaryEditLoadedState) { - // Если текущее состояние уже загружено, обновляем его - var currentState = state as DiaryEditLoadedState; - // Обновляем значения контроллеров только если они уже были созданы - print(currentState.wakeupController); - emit((currentState).copyWith( - wakeupExpanded: currentState.wakeupExpanded, - retireExpanded: currentState.retireExpanded, - wakeupController: currentState.wakeupController, - retireController: currentState.retireController, - )); - } else { - // Если текущее состояние - начальное, создаем новое загруженное состояние - emit(DiaryEditLoadedState( - wakeupExpanded: true, - retireExpanded: false, - wakeupController: TimeOfDay.now(), - retireController: TimeOfDay.now(), - )); - } - } else { + // Все ключевые поля присутствуют, продолжаем обработку*/ + if (state is DiaryEditLoadedState) { + // Если текущее состояние уже загружено, обновляем его + var currentState = state as DiaryEditLoadedState; + // Обновляем значения контроллеров только если они уже были созданы + print(currentState.wakeupController); + emit((currentState).copyWith( + wakeupExpanded: currentState.wakeupExpanded, + moodExpanded: currentState.moodExpanded, + wakeupController: currentState.wakeupController, + retireController: currentState.retireController, + commentController: currentState.commentController, + )); + } else { + // Если текущее состояние - начальное, создаем новое загруженное состояние + emit(DiaryEditLoadedState( + wakeupExpanded: true, + moodExpanded: true, + wakeupController: TimeOfDay.now(), + retireController: TimeOfDay.now(), + commentController: TextEditingController(), + )); + } + /*} else { // Один или несколько ключевых полей отсутствуют, обрабатываем ошибку emit( DiaryEditErrorState('Некоторые необходимые данные отсутствуют.')); @@ -69,7 +71,7 @@ class DiaryEditBloc extends Bloc { } catch (e) { // Ошибка при декодировании JSON или другая ошибка выполнения emit(DiaryEditErrorState('Ошибка при получении данных профиля: $e')); - } + }*/ } /*_expandWakeup( diff --git a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart index af812b00..28cdd066 100644 --- a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart +++ b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart @@ -22,15 +22,17 @@ class DiaryEditLoadedState extends DiaryEditState { {this.diaryEditModelObj, this.wakeupController, this.retireController, + this.commentController, required this.wakeupExpanded, - required this.retireExpanded}) + required this.moodExpanded}) : super(diaryEditModelObj: null); DiaryEditModel? diaryEditModelObj; TimeOfDay? wakeupController; TimeOfDay? retireController; + TextEditingController? commentController; bool wakeupExpanded; - bool retireExpanded; + bool moodExpanded; @override List get props => [diaryEditModelObj, wakeupController, retireController]; @@ -38,15 +40,17 @@ class DiaryEditLoadedState extends DiaryEditState { DiaryEditModel? diaryEditModelObj, TimeOfDay? wakeupController, TimeOfDay? retireController, + TextEditingController? commentController, required bool wakeupExpanded, - required bool retireExpanded, + required bool moodExpanded, }) { return DiaryEditLoadedState( diaryEditModelObj: diaryEditModelObj ?? this.diaryEditModelObj, wakeupController: wakeupController ?? this.wakeupController, retireController: retireController ?? this.retireController, + commentController: commentController ?? this.commentController, wakeupExpanded: wakeupExpanded, - retireExpanded: retireExpanded); + moodExpanded: moodExpanded); } } diff --git a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart index c345b3fa..b378e32c 100644 --- a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart +++ b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart @@ -98,7 +98,7 @@ class DiaryEditScreen extends StatelessWidget { SizedBox(height: 30.v), _buildHeaderColumn(context), SizedBox(height: 30.v), - _buildHeaderStack(context), + _buildComment(context), ], ), ), @@ -681,87 +681,116 @@ class DiaryEditScreen extends StatelessWidget { } /// Section Widget - Widget _buildHeaderColumn1(BuildContext context) { - return Align( - alignment: Alignment.center, - child: Container( - margin: EdgeInsets.symmetric(horizontal: 15.h), - padding: EdgeInsets.symmetric( - horizontal: 50.h, - vertical: 28.v, - ), - decoration: AppDecoration.outlinePrimary.copyWith( - borderRadius: BorderRadiusStyle.roundedBorder12, - ), - child: SizedBox( - width: 240.h, - child: Text( - "Дополнительная информация для консультанта", - maxLines: 2, - overflow: TextOverflow.ellipsis, - textAlign: TextAlign.center, - style: CustomTextStyles.bodyMediumBlack900, + Widget _buildComment(BuildContext context, DiaryEditLoadedState state) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 16.h), + child: Container( + padding: EdgeInsets.symmetric( + horizontal: 24.h, + vertical: 12.v, ), - ), - ), - ); + decoration: AppDecoration.outlinePrimary.copyWith( + borderRadius: BorderRadiusStyle.roundedBorder12, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Дополнительная информация для консультанта", + style: theme.textTheme.titleMedium, + textAlign: TextAlign.center, + ), + Align( + alignment: Alignment.bottomCenter, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 20.v), + Container( + width: 320.h, + child: CustomTextFormField( + autofocus: false, + hintText: "Введите информацию для консультанта", + maxLines: 7, + borderDecoration: InputBorder.none, + controller: state.commentController, + ), + ), + ], + ), + ), + ], + ), + )); } - /// Section Widget - Widget _buildHeaderStack(BuildContext context) { - return SizedBox( - height: 235.v, - width: 374.h, - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - _buildHeaderColumn1(context), - Align( - alignment: Alignment.bottomCenter, - child: Padding( - padding: EdgeInsets.only(bottom: 103.v), - child: SizedBox( - width: 374.h, - child: Divider(), - ), - ), + Widget _buildWakupRetire(BuildContext context, DiaryEditLoadedState state) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 16.h), + child: Container( + padding: EdgeInsets.symmetric( + horizontal: 24.h, + vertical: 12.v, ), - Align( - alignment: Alignment.bottomCenter, - child: Container( - margin: EdgeInsets.only( - left: 35.h, - right: 35.h, - bottom: 20.v, - ), - padding: EdgeInsets.symmetric( - horizontal: 14.h, - vertical: 9.v, - ), - decoration: AppDecoration.outlineBlueGray.copyWith( - borderRadius: BorderRadiusStyle.roundedBorder5, - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 63.v), - Container( - width: 245.h, - margin: EdgeInsets.only(right: 27.h), - child: Text( - "Введите дополнитльеную информацию для консультанта", - maxLines: 2, - overflow: TextOverflow.ellipsis, - style: theme.textTheme.bodyLarge, + decoration: AppDecoration.outlinePrimary.copyWith( + borderRadius: BorderRadiusStyle.roundedBorder12, + ), + child: Column( + children: [ + GestureDetector( + onTap: () { + /*BlocProvider.of(context) + .add(ToggleWakeupExpandedEvent());*/ + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + r"Подъем \ отход ко сну", + style: CustomTextStyles.bodyMediumBlack900, ), - ), - ], + Icon(state.wakeupExpanded + ? Icons.arrow_drop_up + : Icons.arrow_drop_down), + ], + ), ), - ), - ), - ], - ), + if (state.wakeupExpanded) + Padding( + padding: const EdgeInsets.only(left: 16.0), + child: Column( + children: [ + GestureDetector( + onTap: () => _selectTime(context, state), + child: AbsorbPointer( + child: TextFormField( + decoration: InputDecoration( + labelText: 'Во сколько вы просунились?', + suffixIcon: Icon(Icons.access_time), + ), + initialValue: state.wakeupController.toString(), + ), + ), + ), + GestureDetector( + onTap: () => _selectTime(context, state), + child: AbsorbPointer( + child: TextFormField( + decoration: InputDecoration( + labelText: 'Во сколько вы легли спать?', + suffixIcon: Icon(Icons.access_time), + ), + initialValue: state.retireController.toString(), + ), + ), + ) + ], + ), + ), + ], + )), ); } @@ -779,19 +808,19 @@ class DiaryEditScreen extends StatelessWidget { } } -Widget _buildWakupRetire(BuildContext context, DiaryEditLoadedState state) { +Widget _buildMood( + List moodList, BuildContext context, DiaryEditLoadedState state) { return Padding( - padding: EdgeInsets.symmetric(horizontal: 16.h), - child: Container( - padding: EdgeInsets.symmetric( - horizontal: 24.h, - vertical: 12.v, - ), - decoration: AppDecoration.outlinePrimary.copyWith( - borderRadius: BorderRadiusStyle.roundedBorder12, - ), - child: Column( - children: [ + padding: EdgeInsets.symmetric(horizontal: 16.h), + child: Container( + padding: EdgeInsets.symmetric( + horizontal: 24.h, + vertical: 12.v, + ), + decoration: AppDecoration.outlinePrimary.copyWith( + borderRadius: BorderRadiusStyle.roundedBorder12, + ), + child: Column(children: [ GestureDetector( onTap: () { /*BlocProvider.of(context) @@ -801,7 +830,7 @@ Widget _buildWakupRetire(BuildContext context, DiaryEditLoadedState state) { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - r"Подъем \ отход ко сну", + "Ваше настроение после приема пищи", style: CustomTextStyles.bodyMediumBlack900, ), Icon(state.wakeupExpanded @@ -810,81 +839,21 @@ Widget _buildWakupRetire(BuildContext context, DiaryEditLoadedState state) { ], ), ), - if (state.wakeupExpanded) - Padding( - padding: const EdgeInsets.only(left: 16.0), - child: Column( - children: [ - GestureDetector( - onTap: () => _selectTime(context, state), - child: AbsorbPointer( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Во сколько вы просунились?', - suffixIcon: Icon(Icons.access_time), - ), - initialValue: state.wakeupController.toString(), - ), - ), - ), - GestureDetector( - onTap: () => _selectTime(context, state), - child: AbsorbPointer( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Во сколько вы легли спать?', - suffixIcon: Icon(Icons.access_time), - ), - initialValue: state.retireController.toString(), - ), - ), - ) - ], + if (state.moodExpanded) + CustomDropDown( + icon: Container( + margin: EdgeInsets.fromLTRB(30.h, 30.v, 20.h, 30.v), + child: CustomImageView( + imagePath: ImageConstant.imgArrowLeft, + height: 10.v, + width: 18.h, + ), ), + hintText: "Ваше настроение после приема пищи", + items: moodList, + onChanged: (value) {}, ), - ], - )), - ); -} - -Widget _buildMood( - List moodList, BuildContext context, DiaryEditLoadedState state) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 16.h), - child: Column(children: [ - GestureDetector( - onTap: () { - /*BlocProvider.of(context) - .add(ToggleWakeupExpandedEvent());*/ - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Ваше настроение после приема пищи", - style: CustomTextStyles.bodyMediumBlack900, - ), - Icon(state.wakeupExpanded - ? Icons.arrow_drop_up - : Icons.arrow_drop_down), - ], - ), - ), - if (state.wakeupExpanded) - CustomDropDown( - icon: Container( - margin: EdgeInsets.fromLTRB(30.h, 30.v, 20.h, 30.v), - child: CustomImageView( - imagePath: ImageConstant.imgArrowLeft, - height: 10.v, - width: 18.h, - ), - ), - hintText: "Ваше настроение после приема пищи", - items: moodList, - onChanged: (value) {}, - ), - ])); + ]))); } Future _selectTime(