@@ -2,7 +2,6 @@ package com.ninecraft.booket.feature.record.step
22
33import androidx.compose.foundation.background
44import androidx.compose.foundation.layout.Arrangement
5- import androidx.compose.foundation.layout.Box
65import androidx.compose.foundation.layout.Column
76import androidx.compose.foundation.layout.Row
87import androidx.compose.foundation.layout.Spacer
@@ -11,6 +10,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
1110import androidx.compose.foundation.layout.height
1211import androidx.compose.foundation.layout.imePadding
1312import androidx.compose.foundation.layout.padding
13+ import androidx.compose.foundation.relocation.BringIntoViewRequester
14+ import androidx.compose.foundation.relocation.bringIntoViewRequester
1415import androidx.compose.foundation.rememberScrollState
1516import androidx.compose.foundation.text.KeyboardOptions
1617import androidx.compose.foundation.verticalScroll
@@ -51,6 +52,7 @@ import com.ninecraft.booket.feature.record.component.CustomTooltipBox
5152import com.ninecraft.booket.feature.record.component.ImpressionGuideBottomSheet
5253import com.ninecraft.booket.feature.record.register.RecordRegisterUiEvent
5354import com.ninecraft.booket.feature.record.register.RecordRegisterUiState
55+ import kotlinx.coroutines.delay
5456import kotlinx.coroutines.launch
5557import tech.thdev.compose.extensions.keyboard.state.foundation.rememberKeyboardVisible
5658import com.ninecraft.booket.core.designsystem.R as designR
@@ -66,12 +68,14 @@ fun ImpressionStep(
6668 val focusRequester = remember { FocusRequester () }
6769 val keyboardController = LocalSoftwareKeyboardController .current
6870 val scrollState = rememberScrollState()
71+ val bringIntoViewRequester = remember { BringIntoViewRequester () }
6972 val keyboardState by rememberKeyboardVisible()
70- var isSentenceTextFieldFocused by remember { mutableStateOf(false ) }
73+ var isImpressionTextFieldFocused by remember { mutableStateOf(false ) }
7174
72- LaunchedEffect (keyboardState, isSentenceTextFieldFocused) {
73- if (keyboardState && isSentenceTextFieldFocused) {
74- scrollState.animateScrollTo(scrollState.maxValue)
75+ LaunchedEffect (keyboardState, isImpressionTextFieldFocused) {
76+ if (keyboardState && isImpressionTextFieldFocused) {
77+ delay(100 )
78+ bringIntoViewRequester.bringIntoView()
7579 }
7680 }
7781
@@ -82,17 +86,18 @@ fun ImpressionStep(
8286 }
8387 }
8488
85- Box (
89+ Column (
8690 modifier = modifier
8791 .fillMaxSize()
8892 .background(White )
8993 .imePadding(),
9094 ) {
9195 Column (
9296 modifier = Modifier
93- .fillMaxSize()
97+ .fillMaxWidth()
98+ .weight(1f )
9499 .padding(horizontal = ReedTheme .spacing.spacing5)
95- .padding(bottom = 80 .dp)
100+ .padding(bottom = 12 .dp)
96101 .verticalScroll(scrollState),
97102 ) {
98103 Text (
@@ -115,7 +120,7 @@ fun ImpressionStep(
115120 .focusRequester(focusRequester)
116121 .height(140 .dp)
117122 .onFocusChanged { focusState ->
118- isSentenceTextFieldFocused = focusState.isFocused
123+ isImpressionTextFieldFocused = focusState.isFocused
119124 },
120125 keyboardOptions = KeyboardOptions (
121126 keyboardType = KeyboardType .Text ,
@@ -124,7 +129,9 @@ fun ImpressionStep(
124129 )
125130 Spacer (modifier = Modifier .height(ReedTheme .spacing.spacing3))
126131 Row (
127- modifier = Modifier .fillMaxWidth(),
132+ modifier = Modifier
133+ .fillMaxWidth()
134+ .bringIntoViewRequester(bringIntoViewRequester),
128135 horizontalArrangement = Arrangement .End ,
129136 verticalAlignment = Alignment .CenterVertically ,
130137 ) {
@@ -159,9 +166,10 @@ fun ImpressionStep(
159166 sizeStyle = largeButtonStyle,
160167 modifier = Modifier
161168 .fillMaxWidth()
162- .align(Alignment .BottomCenter )
163- .padding(horizontal = ReedTheme .spacing.spacing5)
164- .padding(bottom = ReedTheme .spacing.spacing4),
169+ .padding(
170+ horizontal = ReedTheme .spacing.spacing5,
171+ vertical = ReedTheme .spacing.spacing4,
172+ ),
165173 enabled = state.isNextButtonEnabled,
166174 text = stringResource(R .string.record_next_button),
167175 multipleEventsCutterEnabled = state.currentStep == RecordStep .IMPRESSION ,
0 commit comments