@@ -35,6 +35,7 @@ import androidx.compose.foundation.layout.padding
3535import androidx.compose.foundation.layout.width
3636import androidx.compose.foundation.pager.HorizontalPager
3737import androidx.compose.foundation.pager.PagerScope
38+ import androidx.compose.foundation.pager.PagerState
3839import androidx.compose.foundation.pager.rememberPagerState
3940import androidx.compose.material3.ExperimentalMaterial3Api
4041import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
@@ -46,6 +47,9 @@ import androidx.compose.material3.ToggleButton
4647import androidx.compose.material3.ToggleButtonDefaults
4748import androidx.compose.runtime.Composable
4849import androidx.compose.runtime.LaunchedEffect
50+ import androidx.compose.runtime.derivedStateOf
51+ import androidx.compose.runtime.getValue
52+ import androidx.compose.runtime.remember
4953import androidx.compose.runtime.snapshotFlow
5054import androidx.compose.ui.Modifier
5155import androidx.compose.ui.platform.LocalFocusManager
@@ -68,8 +72,8 @@ fun MainCreationPane(
6872 onSelectedPromptOptionChanged : (PromptType ) -> Unit ,
6973 onDropCallback : (Uri ) -> Unit ,
7074) {
71- PromptTypePager (modifier, uiState, onSelectedPromptOptionChanged) {
72- when (it ) {
75+ PromptTypePager (modifier, uiState, onSelectedPromptOptionChanged) { promptType, pagerState ->
76+ when (promptType ) {
7377 PromptType .PHOTO -> {
7478 PhotoPrompt (
7579 uiState = uiState,
@@ -82,16 +86,25 @@ fun MainCreationPane(
8286 }
8387
8488 PromptType .TEXT -> {
85- TextPrompt (
86- textFieldState = uiState.descriptionText,
87- promptGenerationInProgress = uiState.promptGenerationInProgress,
88- generatedPrompt = uiState.generatedPrompt,
89- onPromptGenerationPressed = onPromptGenerationPressed,
90- modifier = Modifier
91- .fillMaxSize()
92- .heightIn(min = 200 .dp)
93- .padding(2 .dp),
94- )
89+ // Workaround for https://issuetracker.google.com/432431393
90+ val showTextPrompt by remember {
91+ derivedStateOf {
92+ pagerState.currentPage == PromptType .TEXT .ordinal
93+ && pagerState.targetPage == pagerState.currentPage
94+ }
95+ }
96+ if (showTextPrompt) {
97+ TextPrompt (
98+ textFieldState = uiState.descriptionText,
99+ promptGenerationInProgress = uiState.promptGenerationInProgress,
100+ generatedPrompt = uiState.generatedPrompt,
101+ onPromptGenerationPressed = onPromptGenerationPressed,
102+ modifier = Modifier
103+ .fillMaxSize()
104+ .heightIn(min = 200 .dp)
105+ .padding(2 .dp),
106+ )
107+ }
95108 }
96109 }
97110 }
@@ -102,7 +115,7 @@ private fun PromptTypePager(
102115 modifier : Modifier = Modifier ,
103116 uiState : CreationState ,
104117 onSelectedPromptOptionChanged : (PromptType ) -> Unit ,
105- content : @Composable PagerScope .(PromptType ) -> Unit ,
118+ content : @Composable PagerScope .(PromptType , PagerState ) -> Unit ,
106119) {
107120 Box (
108121 modifier = modifier,
@@ -141,7 +154,7 @@ private fun PromptTypePager(
141154 pageSpacing = 16 .dp,
142155 contentPadding = PaddingValues (16 .dp),
143156 pageContent = {
144- content(this , PromptType .entries[it])
157+ content(this , PromptType .entries[it], pagerState )
145158 },
146159 )
147160 }
0 commit comments