val scaffoldState = rememberScaffoldState() 에서 빨간줄이 생기네요
524
投稿した質問数 67
늘 수고많으신 강사님의 노고에 감사드립니다
아래 코드중
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
1
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 에서 여러가지 변경
ViewModel 사용 관련 질문
0
75
1
onTabFavorite 콜백 관련 질문
0
60
2
livedata가 왜 필요한 건지 궁금합니다
0
128
3
깃허브에 있는 MemoryTodoRepository 는 룸을 사용하는게 아닌 메모리에 저장, 수정, 삭제 하는건가요?
0
172
1
이젠 아래와 같은 오류가 뜨는데 KSP가 문제 인걸까요?
0
369
2
영상 1분쯤에서 MainActivity에서 viewModel이 저는 안되고 그래들 문제인거 같은데 해결 방법을 모르겠습니다.
0
186
1
전자액자에서 영상과 깃허브의 내용이 달라서 영상을 다보고 깃허브 내용으로 돌려봤는데 권한요청부터가 안됩니다.
0
189
2
Navigation수업에서 string대신 bitmap을 인자로 넘겨주는 방법?
0
177
1
TodoList - 04에서 recentlyDeleteTodo가 null일 경우 처리 방법 문의
0
171
1
나만의 웹 브라우저 03 - UI와 ViewModel 연동 강의에서 질문들이 있습니다.
0
205
2
Scaffold를 사용하면 Content padding parameter it is not used 에러
0
350
1
Material3로 바뀌면서 강의랑 다른 부분이 초반부터 있는데요.
0
221
1
강의에서 사용하는 리소스(이미지 등)을 다운 받을 수 있으면 좋겠어요.
0
248
2
Card Compose에서 elevation 옵션
1
347
1
구글맵 질문입니다
0
233
1
구글맵강의중에서 ..
0
578
7
drawCircle( color = Color.... 부분에서 빨간줄이 ...
0
269
2
나만의 웹브라우져 02 코드실행시 에뮬레이터에 따라
0
221
1
나만의 웹브라우져 01 코딩 후 실행하면 아래와 같은 오류가 뜨네요
0
3221
2
비만도계산기 로직작성 에서 문제가 발생했어요 ^^
0
338
3
viewModel() 오류 추가질문입니다
0
1118
2
viewModel: MainViewModel = viewModel() 에 오류있습니다
0
537
3
AAR metadata 관련오류발생
0
1437
3
모바일화면에 키보드가 사라지지 않아
0
250
1

