-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 온보딩 UI #116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feat] 온보딩 UI #116
Changes from all commits
edb686d
3ba438b
237e8ea
f7070b6
209472d
0dd2b50
252f1c8
ce21147
59343cf
ad92e85
86899b6
1a16a95
03360fc
35d8441
7444570
6aa2a30
4ce8471
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,119 @@ | ||||||||||||||||||||||||||||||||||||||
| package com.flint.presentation.onboarding | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.Image | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.background | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Column | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.PaddingValues | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Spacer | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.height | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.padding | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.statusBarsPadding | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.material3.Text | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.runtime.Composable | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Modifier | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.layout.ContentScale | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.res.painterResource | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.tooling.preview.Preview | ||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.unit.dp | ||||||||||||||||||||||||||||||||||||||
| import com.flint.R | ||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.button.FlintBasicButton | ||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.button.FlintButtonState | ||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.topappbar.FlintBackTopAppbar | ||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.theme.FlintTheme | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||
| fun OnboardingDoneRoute( | ||||||||||||||||||||||||||||||||||||||
| paddingValues: PaddingValues, | ||||||||||||||||||||||||||||||||||||||
| navigateToHome: () -> Unit, | ||||||||||||||||||||||||||||||||||||||
| navigateUp: () -> Unit, | ||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||
| OnboardingDoneScreen( | ||||||||||||||||||||||||||||||||||||||
| onBackClick = navigateUp, | ||||||||||||||||||||||||||||||||||||||
| onNextClick = navigateToHome, | ||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.padding(paddingValues), | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
|
coderabbitai[bot] marked this conversation as resolved.
|
||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||
| fun OnboardingDoneScreen( | ||||||||||||||||||||||||||||||||||||||
| onBackClick: () -> Unit, | ||||||||||||||||||||||||||||||||||||||
| onNextClick: () -> Unit, | ||||||||||||||||||||||||||||||||||||||
| modifier: Modifier = Modifier, | ||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| modifier | ||||||||||||||||||||||||||||||||||||||
| .fillMaxSize() | ||||||||||||||||||||||||||||||||||||||
| .background(color = FlintTheme.colors.background) | ||||||||||||||||||||||||||||||||||||||
| .statusBarsPadding(), | ||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||
| FlintBackTopAppbar( | ||||||||||||||||||||||||||||||||||||||
| onClick = onBackClick, | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||
| .weight(1f), | ||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(12.dp)) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Text( | ||||||||||||||||||||||||||||||||||||||
| text = "취향이 보이기 시작했어요", | ||||||||||||||||||||||||||||||||||||||
| color = FlintTheme.colors.primary200, | ||||||||||||||||||||||||||||||||||||||
| style = FlintTheme.typography.body1R16, | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth() | ||||||||||||||||||||||||||||||||||||||
| .padding(horizontal = 16.dp), | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(8.dp)) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Text( | ||||||||||||||||||||||||||||||||||||||
| text = "Flint에서 끌리는 콘텐츠를\n만나러 가볼까요? ", | ||||||||||||||||||||||||||||||||||||||
| color = FlintTheme.colors.white, | ||||||||||||||||||||||||||||||||||||||
| style = FlintTheme.typography.display2M28, | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth() | ||||||||||||||||||||||||||||||||||||||
| .padding(horizontal = 16.dp), | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(40.dp)) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Image( | ||||||||||||||||||||||||||||||||||||||
| painter = painterResource(id = R.drawable.img_onboarding_3d), | ||||||||||||||||||||||||||||||||||||||
| contentDescription = null, | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth(), | ||||||||||||||||||||||||||||||||||||||
| contentScale = ContentScale.Crop, | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| FlintBasicButton( | ||||||||||||||||||||||||||||||||||||||
| text = "시작하기", | ||||||||||||||||||||||||||||||||||||||
| state = FlintButtonState.Disable, | ||||||||||||||||||||||||||||||||||||||
| onClick = onNextClick, | ||||||||||||||||||||||||||||||||||||||
| contentPadding = PaddingValues(vertical = 14.dp), | ||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth() | ||||||||||||||||||||||||||||||||||||||
| .padding(horizontal = 20.dp, vertical = 20.dp), | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+97
to
+105
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. “시작하기” 버튼이 비활성화라 진행이 막힙니다.
🐛 수정 제안 FlintBasicButton(
text = "시작하기",
- state = FlintButtonState.Disable,
+ state = FlintButtonState.Enable, // 프로젝트에서 정의한 활성 상태로 변경
onClick = onNextClick,
contentPadding = PaddingValues(vertical = 14.dp),📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 어 아직 의도한거야 뷰모델 하면서 작업할거야
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
✏️ Learnings added
|
||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| @Preview(showBackground = true) | ||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||
| private fun OnboardingDoneScreenPreview() { | ||||||||||||||||||||||||||||||||||||||
| FlintTheme { | ||||||||||||||||||||||||||||||||||||||
| OnboardingDoneScreen( | ||||||||||||||||||||||||||||||||||||||
| onBackClick = {}, | ||||||||||||||||||||||||||||||||||||||
| onNextClick = {}, | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
|
ckals413 marked this conversation as resolved.
|
||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,15 +1,214 @@ | ||||||||||||||||||||||||||||||||||||||||||
| package com.flint.presentation.onboarding | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.background | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Arrangement | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Box | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Column | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.PaddingValues | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Spacer | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.height | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.padding | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.statusBarsPadding | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.lazy.LazyRow | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.lazy.grid.GridCells | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.lazy.grid.GridItemSpan | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.lazy.grid.LazyVerticalGrid | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.material3.Text | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.runtime.Composable | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Alignment | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Modifier | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.tooling.preview.Preview | ||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.unit.dp | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.button.FlintBasicButton | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.button.FlintButtonState | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.image.SelectedFilmItem | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.textfield.FlintSearchTextField | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.topappbar.FlintBackTopAppbar | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.component.view.FlintSearchEmptyView | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.core.designsystem.theme.FlintTheme | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.presentation.onboarding.component.OnboardingFilmItem | ||||||||||||||||||||||||||||||||||||||||||
| import com.flint.presentation.onboarding.component.StepProgressBar | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||
| fun OnboardingFilmRoute( | ||||||||||||||||||||||||||||||||||||||||||
| paddingValues: PaddingValues, | ||||||||||||||||||||||||||||||||||||||||||
| navigateToOnboardingOtt: () -> Unit, | ||||||||||||||||||||||||||||||||||||||||||
| navigateUp: () -> Unit, | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| OnboardingFilmScreen( | ||||||||||||||||||||||||||||||||||||||||||
| nickname = "User", | ||||||||||||||||||||||||||||||||||||||||||
| currentStep = 7, | ||||||||||||||||||||||||||||||||||||||||||
| onBackClick = navigateUp, | ||||||||||||||||||||||||||||||||||||||||||
| onNextClick = navigateToOnboardingOtt, | ||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.padding(paddingValues), | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
34
to
47
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
제안된 수정 `@Composable`
fun OnboardingFilmRoute(
paddingValues: PaddingValues,
navigateToOnboardingOtt: () -> Unit,
+ onBackClick: () -> Unit,
) {
OnboardingFilmScreen(
nickname = "User",
currentStep = 7,
- onBackClick = {},
+ onBackClick = onBackClick,
onNextClick = navigateToOnboardingOtt,
+ modifier = Modifier.padding(paddingValues),
)
}🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||
| fun OnboardingFilmScreen() { | ||||||||||||||||||||||||||||||||||||||||||
| fun OnboardingFilmScreen( | ||||||||||||||||||||||||||||||||||||||||||
| nickname: String, | ||||||||||||||||||||||||||||||||||||||||||
| currentStep: Int, | ||||||||||||||||||||||||||||||||||||||||||
| onBackClick: () -> Unit, | ||||||||||||||||||||||||||||||||||||||||||
| onNextClick: () -> Unit, | ||||||||||||||||||||||||||||||||||||||||||
| // UI 테스트를 위한 임시 파라미터 (실제 로직 연결 시 ViewModel 상태로 대체) | ||||||||||||||||||||||||||||||||||||||||||
| isEmptyParams: Boolean = false, | ||||||||||||||||||||||||||||||||||||||||||
| modifier: Modifier = Modifier, | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||
| modifier | ||||||||||||||||||||||||||||||||||||||||||
| .fillMaxSize() | ||||||||||||||||||||||||||||||||||||||||||
| .background(color = FlintTheme.colors.background) | ||||||||||||||||||||||||||||||||||||||||||
| .statusBarsPadding(), | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| FlintBackTopAppbar( | ||||||||||||||||||||||||||||||||||||||||||
| onClick = onBackClick, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(16.dp)) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| StepProgressBar( | ||||||||||||||||||||||||||||||||||||||||||
| currentStep = currentStep, | ||||||||||||||||||||||||||||||||||||||||||
| totalSteps = 7, | ||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.padding(horizontal = 20.dp), | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(23.dp)) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| // 전체 콘텐츠를 LazyVerticalGrid로 구성 | ||||||||||||||||||||||||||||||||||||||||||
| LazyVerticalGrid( | ||||||||||||||||||||||||||||||||||||||||||
| columns = GridCells.Fixed(3), | ||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.weight(1f), | ||||||||||||||||||||||||||||||||||||||||||
| overscrollEffect = null, | ||||||||||||||||||||||||||||||||||||||||||
| contentPadding = PaddingValues(horizontal = 16.dp), | ||||||||||||||||||||||||||||||||||||||||||
| horizontalArrangement = Arrangement.spacedBy(14.dp), | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| // 타이틀 영역 - 스크롤됨 | ||||||||||||||||||||||||||||||||||||||||||
| item(span = { GridItemSpan(3) }) { | ||||||||||||||||||||||||||||||||||||||||||
| Column { | ||||||||||||||||||||||||||||||||||||||||||
| Text( | ||||||||||||||||||||||||||||||||||||||||||
| text = "${nickname}님이 좋아하는 작품\n7개를 골라주세요", | ||||||||||||||||||||||||||||||||||||||||||
| color = FlintTheme.colors.white, | ||||||||||||||||||||||||||||||||||||||||||
| style = FlintTheme.typography.display2M28, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(8.dp)) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Text( | ||||||||||||||||||||||||||||||||||||||||||
| text = "이번 달 가장 재미있었던 작품은?", | ||||||||||||||||||||||||||||||||||||||||||
| color = FlintTheme.colors.gray300, | ||||||||||||||||||||||||||||||||||||||||||
| style = FlintTheme.typography.body2R14, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(24.dp)) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| // 검색창 - sticky header (상단에 고정) | ||||||||||||||||||||||||||||||||||||||||||
| stickyHeader { | ||||||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||
| .background(FlintTheme.colors.background) | ||||||||||||||||||||||||||||||||||||||||||
| .padding(bottom = 16.dp), | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| FlintSearchTextField( | ||||||||||||||||||||||||||||||||||||||||||
| placeholder = "작품 이름", | ||||||||||||||||||||||||||||||||||||||||||
| value = "", | ||||||||||||||||||||||||||||||||||||||||||
| onValueChanged = {}, | ||||||||||||||||||||||||||||||||||||||||||
| onSearchAction = {}, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+109
to
+122
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 검색 입력이 동작하지 않습니다 (값 고정). Line 118-119에서 🛠️ 제안 수정+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.rememberSaveable
+import androidx.compose.runtime.setValue
@@
fun OnboardingFilmScreen(
@@
) {
+ var query by rememberSaveable { mutableStateOf("") }
+
Column(
@@
FlintBasicTextField(
placeholder = "작품 이름",
- value = "",
- onValueChange = {},
+ value = query,
+ onValueChange = { query = it },
modifier = Modifier.fillMaxWidth(),
)🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| // 선택된 영화 가로 스크롤 | ||||||||||||||||||||||||||||||||||||||||||
| item(span = { GridItemSpan(3) }) { | ||||||||||||||||||||||||||||||||||||||||||
| Column { | ||||||||||||||||||||||||||||||||||||||||||
| LazyRow( | ||||||||||||||||||||||||||||||||||||||||||
| horizontalArrangement = Arrangement.spacedBy(0.dp), | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| items(7) { index -> | ||||||||||||||||||||||||||||||||||||||||||
| SelectedFilmItem( | ||||||||||||||||||||||||||||||||||||||||||
| imageUrl = "", | ||||||||||||||||||||||||||||||||||||||||||
| onRemoveClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(20.dp)) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| // 영화 검색 목록 [비어있을 때 || 리스트 있을 때] | ||||||||||||||||||||||||||||||||||||||||||
| if (isEmptyParams) { | ||||||||||||||||||||||||||||||||||||||||||
| item(span = { GridItemSpan(3) }) { | ||||||||||||||||||||||||||||||||||||||||||
| Box( | ||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth() | ||||||||||||||||||||||||||||||||||||||||||
| .height(300.dp), // 대강 // TODO: 위아래 중앙 배치 | ||||||||||||||||||||||||||||||||||||||||||
| contentAlignment = Alignment.Center, | ||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||
| FlintSearchEmptyView() | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||||||||||||||||||
| // 영화 목록 그리드 | ||||||||||||||||||||||||||||||||||||||||||
| items(9) { index -> | ||||||||||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. p3
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 넵! |
||||||||||||||||||||||||||||||||||||||||||
| OnboardingFilmItem( | ||||||||||||||||||||||||||||||||||||||||||
| imageUrl = "", | ||||||||||||||||||||||||||||||||||||||||||
| title = "은하수를 여행하는 히치하이커...", | ||||||||||||||||||||||||||||||||||||||||||
| director = "가스 제닝스", | ||||||||||||||||||||||||||||||||||||||||||
| releaseYear = "2005", | ||||||||||||||||||||||||||||||||||||||||||
| isSelected = false, | ||||||||||||||||||||||||||||||||||||||||||
| onClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||
| Modifier.padding( | ||||||||||||||||||||||||||||||||||||||||||
| top = if (index >= 3) 20.dp else 0.dp, | ||||||||||||||||||||||||||||||||||||||||||
| ), | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| FlintBasicButton( | ||||||||||||||||||||||||||||||||||||||||||
| text = "다음", | ||||||||||||||||||||||||||||||||||||||||||
| state = FlintButtonState.Disable, | ||||||||||||||||||||||||||||||||||||||||||
| onClick = onNextClick, | ||||||||||||||||||||||||||||||||||||||||||
| contentPadding = PaddingValues(vertical = 14.dp), | ||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth() | ||||||||||||||||||||||||||||||||||||||||||
| .padding(horizontal = 20.dp, vertical = 20.dp), | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+175
to
+184
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "다음" 버튼이 비활성화 상태입니다.
제안된 수정 FlintBasicButton(
text = "다음",
- state = FlintButtonState.Disable,
+ state = FlintButtonState.Enable, // 또는 조건부 상태
onClick = onNextClick,📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| @Preview(showBackground = true, name = "기본 목록 상태") | ||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||
| private fun OnboardingFilmScreenListPreview() { | ||||||||||||||||||||||||||||||||||||||||||
| FlintTheme { | ||||||||||||||||||||||||||||||||||||||||||
| OnboardingFilmScreen( | ||||||||||||||||||||||||||||||||||||||||||
| nickname = "안비", | ||||||||||||||||||||||||||||||||||||||||||
| currentStep = 7, | ||||||||||||||||||||||||||||||||||||||||||
| onBackClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| onNextClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| isEmptyParams = false, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| @Preview(showBackground = true, name = "검색 결과 없음 상태") | ||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||
| private fun OnboardingFilmScreenEmptyPreview() { | ||||||||||||||||||||||||||||||||||||||||||
| FlintTheme { | ||||||||||||||||||||||||||||||||||||||||||
| OnboardingFilmScreen( | ||||||||||||||||||||||||||||||||||||||||||
| nickname = "안비", | ||||||||||||||||||||||||||||||||||||||||||
| currentStep = 7, | ||||||||||||||||||||||||||||||||||||||||||
| onBackClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| onNextClick = {}, | ||||||||||||||||||||||||||||||||||||||||||
| isEmptyParams = true, | ||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.