11package daily.dayo.presentation.screen.main
22
3+ import android.widget.Toast
4+ import androidx.activity.compose.BackHandler
35import androidx.annotation.DrawableRes
46import androidx.annotation.StringRes
57import androidx.compose.animation.ExperimentalSharedTransitionApi
@@ -30,13 +32,15 @@ import androidx.compose.material3.SnackbarHostState
3032import androidx.compose.runtime.Composable
3133import androidx.compose.runtime.derivedStateOf
3234import androidx.compose.runtime.getValue
35+ import androidx.compose.runtime.mutableLongStateOf
3336import androidx.compose.runtime.mutableStateOf
3437import androidx.compose.runtime.remember
3538import androidx.compose.runtime.rememberCoroutineScope
3639import androidx.compose.runtime.setValue
3740import androidx.compose.ui.Alignment
3841import androidx.compose.ui.Modifier
3942import androidx.compose.ui.graphics.vector.ImageVector
43+ import androidx.compose.ui.platform.LocalContext
4044import androidx.compose.ui.res.stringResource
4145import androidx.compose.ui.res.vectorResource
4246import androidx.compose.ui.tooling.preview.Preview
@@ -78,6 +82,7 @@ import kotlinx.coroutines.launch
7882@Composable
7983internal fun MainScreen (
8084 onAdRequest : (onRewardSuccess: () -> Unit ) -> Unit ,
85+ onExit : () -> Unit ,
8186 navigator : MainNavigator = rememberMainNavigator(),
8287 profileViewModel : ProfileViewModel = hiltViewModel()
8388) {
@@ -92,6 +97,22 @@ internal fun MainScreen(
9297 derivedStateOf { if (bottomSheetState.bottomSheetState.currentValue == SheetValue .Expanded ) 0.6f else 0f }
9398 }
9499 val animatedDimAlpha by animateFloatAsState(targetValue = bottomSheetDimAlpha)
100+ val context = LocalContext .current
101+ var lastBackPressedTime by remember { mutableLongStateOf(0L ) }
102+ val toast = remember { Toast .makeText(context, context.getString(R .string.main_finish_toast), Toast .LENGTH_SHORT ) }
103+
104+ BackHandler {
105+ if (! navigator.navigateUp()) { // 뒤로갈 화면 없는 경우
106+ val currentTime = System .currentTimeMillis()
107+ if (currentTime - lastBackPressedTime < 2000 ) {
108+ toast?.cancel()
109+ onExit() // 앱 종료
110+ } else {
111+ lastBackPressedTime = currentTime
112+ toast?.show()
113+ }
114+ }
115+ }
95116
96117 SharedTransitionLayout {
97118 BottomSheetScaffold (
0 commit comments