-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
val scaffoldState = rememberScaffoldState() 에서 빨간줄이 생기네요
23.12.03 09:53 작성 조회수 226
0
늘 수고많으신 강사님의 노고에 감사드립니다
아래 코드중
val scaffoldState = rememberScaffoldState() 에서 빨간줄이 생기네요
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val viewModel = viewModel<MainViewModel>()
HomeScreen(viewModel = viewModel)
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeScreen(viewModel: MainViewModel) {
val focusManager = LocalFocusManager.current
val (inputUrl, setUrl) = rememberSaveable {
mutableStateOf("https://www.google.com")
}
val scaffoldState = rememberScaffoldState()
Scaffold (
topBar = {
TopAppBar(
title = { Text("나의 웹브라우져")},
actions = {
IconButton(onClick = {
viewModel.undo()
}){
Icon(
imageVector = Icons.Default.ArrowBack,
contentDescription = "back",
tint = Color.Black
)
}
IconButton(onClick = {
viewModel.redo()
}){
Icon(
imageVector = Icons.Default.ArrowForward,
contentDescription = "forward",
tint = Color.Black
)
}
}
)
}
) { paddingValues ->
Column(
modifier = Modifier
.padding(16.dp)
.fillMaxSize()
) {
OutlinedTextField(
value = inputUrl,
onValueChange = setUrl,
label = { Text("https://")},
modifier = Modifier
.padding(paddingValues)
.fillMaxWidth(),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search),
keyboardActions = KeyboardActions(onSearch = {
viewModel.url.value = inputUrl
focusManager.clearFocus()
}),
)
Spacer(modifier = Modifier.height(16.dp))
MyWebView(viewModel = viewModel)
}
}
}
@Composable
fun MyWebView(viewModel: MainViewModel) {
val scope = rememberCoroutineScope()
AndroidView(
modifier = Modifier.fillMaxSize(),
factory = {
WebView(it).apply {
settings.javaScriptEnabled = true
webViewClient = WebViewClient()
loadUrl("https://google.com")
}
},
update = { webView ->
webView.loadUrl(viewModel.url.value)
scope.launch{
viewModel.undoSharedFlow.collectLatest {
if(webView.canGoBack()) {
webView.goBack()
}
}
}
scope.launch{
viewModel.redoSharedFlow.collectLatest {
if(webView.canGoForward()) {
webView.goForward()
}
}
}
},
)
답변을 작성해보세요.
1
오준석
지식공유자2023.12.03
Scaffold 관련된 API가 머티리얼3에서 변경이 되어서 본 수업의 두 번째 강의에서 변경된 내용에 대한 참고 링크를 제시해 드리고, 변경사항이 많은 코드는 github에 최신 코드로 업데이트 해 두었습니다.
https://github.com/junsuk5/android-compose
나만의 웹브라우저
나머지 프로젝트도 얼마나 코드 변경이 필요하신지 학습에 참고하시면 될 것 같습니다.
- 머티리얼3 및 targertApi=33 기준으로 코드 업데이트 현황(100% 완료) 및 변경 난이도(상,중,하) -
Bmi 계산기(하) : 머티리얼3 기반 소소한 변경점
스톱워치(하) : 머티리얼3 기반 소소한 변경점
나만의 웹브라우저(하) : 스낵바 관련 API 변경
전자액자(상) : TargetApi 33 부터 변경된 권한을 분기로 처리, pager API 변경, Coil API 변경
수평측정기(X) : 코드 변경사항 없음. 프리뷰쪽에 일부 API 수정
실로폰(X) : 코드 변경사항 없음
Gps Map(하) : Location 관련 API 소소한 변경
TodoList(중) : 코드 변경사항 없음. build.gradle.kts 에서 여러가지 변경
답변 1