我在AndroidView
中使用的变量singleArticle.content
返回一个空值。但如果我在AndroidView
外显示它的值正确出现。有人能知道我的代码有什么问题吗?
@Composable
fun ArticleDetailScreen(
navController: NavController,
viewModel: ArticleDetailViewModel = hiltViewModel()
) {
...
CustomWebView(viewModel.article.value)
...
}
@Composable
fun CustomWebView(singleArticle: Article) {
AndroidView(
factory = { context ->
WebView(context).apply {
loadData(singleArticle.content, "text/html", "UTF-8")
}
},
)
}
一个可能的原因是您的singleArticle.content
最初为空,并在视图出现后得到更新。
AndroidView
factory
在创建视图时只被调用一次。要与Compose状态更新同步,您应该使用update
block:
AndroidView(
factory = { context ->
WebView(context)
},
update = {
it.loadData(singleArticle.content, "text/html", "UTF-8")
},
)