mirror of
https://github.com/AdrianKuta/KahootQuiz.git
synced 2025-09-14 17:24:21 +02:00
This commit refactors the `QuizScreen` to use a `Column` instead of a `LazyColumn` for its main layout, improving the positioning and sizing of elements. It also introduces an `EvenGrid` composable for displaying choices, ensuring they are evenly distributed. Key changes: - **QuizScreen.kt:** - Changed the main layout from `LazyColumn` to `Column`. - Toolbar, QuestionContent, Choices, Timer, and ContinueButton are now direct children of the `Column`. - `QuestionContent` now uses `fillMaxHeight(0.5f)` to take up half the available height. - `Choices` composable now uses `weight(1f)` to fill remaining space. - Removed `animateContentSize` and `animateItem` modifiers. - Refactored how individual UI sections (toolbar, question, choices, timer, continue button) are structured within the main `Column`. - **components/EvenGrid.kt:** - Added a new reusable `EvenGrid` composable that arranges items into a grid with a specified number of columns, ensuring even distribution. - **components/Choices.kt:** - Replaced `FlowRow` with the new `EvenGrid` composable to display choices. - `ChoiceItem` now uses `fillMaxHeight()` within the `EvenGrid` cell. - Removed explicit height setting for `ChoiceItem`'s `Box`. - **components/QuestionContent.kt:** - `AsyncImage` within `QuestionContent` now uses `weight(1f)` instead of `heightIn(min = 200.dp)`. - **components/TimerBar.kt:** - Removed `coerceIn(0f, 1f)` for `progress` in `fillMaxWidth` as progress should already be within this range. - **QuizScreenViewModel.kt & domain/models/Question.kt:** - Made `Question.choices` non-nullable (`List<Choice>`) and updated the mapper and ViewModel to reflect this. This simplifies null checks for `currentQuestion.choices`. - Accessing `quizState.quiz.questions[currentQuestionIndex]` directly instead of `getOrNull` as the index should always be valid. - **data/mappers/QuizMapper.kt:** - Updated `QuestionDto.toDomain()` to return `orEmpty()` for choices, ensuring a non-null list.