feat(diary) Made an event expanded list display for mood

This commit is contained in:
2024-02-15 16:02:13 +03:00
parent 8e49d056c5
commit a6ab577d20
3 changed files with 85 additions and 59 deletions

View File

@@ -16,8 +16,9 @@ part 'diary_edit_state.dart';
class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
DiaryEditBloc(DiaryEditState initialState) : super(initialState) {
on<DiaryEditInitialEvent>(_onInitialize);
on<SatietyEvent>(_changeSatiety);
on<ChangeSatiety>(_changeSatiety);
on<MoodEvent>(_changeMood);
on<ToggleMoodExpandedEvent>(_toggleMood);
}
Future<void> _onInitialize(
@@ -94,11 +95,12 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
}*/
Future<void> _changeSatiety(
SatietyEvent event, Emitter<DiaryEditState> emit) async {
ChangeSatiety event, Emitter<DiaryEditState> emit) async {
if (state is DiaryEditLoadedState) {
var currentState = state as DiaryEditLoadedState;
emit(currentState.copyWith(selectedSatiety: event.selectedElement));
currentState.selectedSatiety = event.selectedElement;
print(currentState.selectedSatiety);
}
}
@@ -106,8 +108,20 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
MoodEvent event, Emitter<DiaryEditState> emit) async {
if (state is DiaryEditLoadedState) {
var currentState = state as DiaryEditLoadedState;
emit(currentState.copyWith(selectedMood: event.selectedElement));
currentState.selectedMood = event.selectedElement;
}
}
FutureOr<void> _toggleMood(
ToggleMoodExpandedEvent event, Emitter<DiaryEditState> emit) {
if (state is DiaryEditLoadedState) {
var currentState = state as DiaryEditLoadedState;
emit(currentState.copyWith(moodExpanded: !currentState.moodExpanded));
currentState.moodExpanded = !currentState.moodExpanded;
print(currentState.moodExpanded);
}
}
}

View File

@@ -15,8 +15,8 @@ class DiaryEditInitialEvent extends DiaryEditEvent {
List<Object?> get props => [];
}
class SatietyEvent extends DiaryEditEvent {
SatietyEvent(this.selectedElement);
class ChangeSatiety extends DiaryEditEvent {
ChangeSatiety(this.selectedElement);
final int selectedElement;
@override
@@ -30,4 +30,8 @@ class MoodEvent extends DiaryEditEvent {
@override
List<Object> get props => [selectedElement];
}
//class ToggleWakeupExpandedEvent extends DiaryEditEvent {}
class ToggleMoodExpandedEvent extends DiaryEditEvent {
@override
List<Object?> get props => [];
}

View File

@@ -83,7 +83,7 @@ class DiaryEditScreen extends StatelessWidget {
SizedBox(height: 20.v),
_buildMood(context, state),
SizedBox(height: 30.v),
_buildHeaderColumn(context),
_buildNutritionChart(context),
SizedBox(height: 30.v),
_buildComment(context, state),
],
@@ -280,56 +280,64 @@ class DiaryEditScreen extends StatelessWidget {
style: CustomTextStyles.bodyMediumBlack900,
),
SizedBox(height: 15.v),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("😭"),
ScaleElement(
color: Colors.red,
isSelected: state.selectedSatiety == 0,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(0));
},
),
ScaleElement(
color: Colors.orange,
isSelected: state.selectedSatiety == 1,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(1));
},
),
ScaleElement(
color: Colors.yellow,
isSelected: state.selectedSatiety == 2,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(2));
},
),
ScaleElement(
color: Colors.lime,
isSelected: state.selectedSatiety == 3,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(3));
},
),
ScaleElement(
color: Colors.lightGreen,
isSelected: state.selectedSatiety == 4,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(4));
},
),
ScaleElement(
color: Colors.green,
isSelected: state.selectedSatiety == 5,
onTap: () {
context.read<DiaryEditBloc>().add(SatietyEvent(5));
},
),
Text("😊"),
// Остальные элементы шкалы
],
),
BlocBuilder<DiaryEditBloc, DiaryEditState>(
builder: (context, state) {
if (state is DiaryEditLoadedState) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("😭"),
ScaleElement(
color: Colors.red,
isSelected: state.selectedSatiety == 0,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(0));
},
),
ScaleElement(
color: Colors.orange,
isSelected: state.selectedSatiety == 1,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(1));
},
),
ScaleElement(
color: Colors.yellow,
isSelected: state.selectedSatiety == 2,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(2));
},
),
ScaleElement(
color: Colors.lime,
isSelected: state.selectedSatiety == 3,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(3));
},
),
ScaleElement(
color: Colors.lightGreen,
isSelected: state.selectedSatiety == 4,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(4));
},
),
ScaleElement(
color: Colors.green,
isSelected: state.selectedSatiety == 5,
onTap: () {
context.read<DiaryEditBloc>().add(ChangeSatiety(5));
},
),
Text("😊"),
// Остальные элементы шкалы
],
);
} else {
return Container(); // Возвращаем пустой контейнер, если состояние не является DiaryEditLoadedState
}
},
)
],
),
));
@@ -387,7 +395,7 @@ class DiaryEditScreen extends StatelessWidget {
);
}
Widget _buildHeaderColumn(BuildContext context) {
Widget _buildNutritionChart(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 16.h),
padding: EdgeInsets.symmetric(
@@ -797,8 +805,8 @@ class DiaryEditScreen extends StatelessWidget {
child: Column(children: [
GestureDetector(
onTap: () {
/*BlocProvider.of<DiaryEditBloc>(context)
.add(ToggleWakeupExpandedEvent());*/
BlocProvider.of<DiaryEditBloc>(context)
.add(ToggleMoodExpandedEvent());
},
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,