philipy355 / inflearn-compose

0 stars 0 forks source link

docs : 웹뷰 Composable, LaunchedEffect, sharedFlow, snackBar(once) #16

Open philipy355 opened 11 months ago

philipy355 commented 11 months ago

@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @OptIn(ExperimentalMaterial3Api::class) @Composable fun HomeScreen(viewModel: MainViewModel){ val focusManger = LocalFocusManager.current

val (inputUrl, setUrl) = rememberSaveable{
    mutableStateOf("https://www.google.com")
}

val snackbarHostState = remember { SnackbarHostState() }

Scaffold(
    topBar = {
        TopAppBar(
            title = { Text(text = "나만의 웹브라우저")},
            actions = {
                IconButton(onClick = {
                    viewModel.undo()
                }) {
                    Icon(
                        imageVector = Icons.Default.ArrowBack,
                        contentDescription = "back"
                    )
                }

                IconButton(onClick = {
                    viewModel.redo()
                }) {
                    Icon(
                        imageVector = Icons.Default.ArrowForward,
                        contentDescription = "forward"
                    )
                }
            }
        )
    },
    snackbarHost = { SnackbarHost(snackbarHostState) },
) {
    Column(
        modifier = Modifier
            .padding(16.dp)
            .fillMaxSize()
    ) {
        Spacer(modifier = Modifier.height(60.dp))

        OutlinedTextField(
            value = inputUrl,
            onValueChange = setUrl,
            label = { Text("https://")},
            modifier = Modifier.fillMaxWidth(),
            keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search),
            keyboardActions = KeyboardActions(onSearch = {
                viewModel.url.value = inputUrl
                focusManger.clearFocus()
            })
        )

        Spacer(modifier = Modifier.height(16.dp))

        MyWebView(viewModel = viewModel, snackbarHostState)
    }
}

}