Pie*_*ira 2 android kotlin android-jetpack-compose
我正在为使用自定义视图的撰写函数创建一个抽象:
@Composable
fun DisposeBanner(bannerView: BannerView) {
DisposableEffect(key1 = true) {
onDispose {
bannerView.destroyAd()
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,由于这个函数实际上并不渲染任何组件,我不希望它坚持 @Composable 标记,而是表明它只能通过扩展在组合函数中使用。
当尝试这样做时:
fun Composable.disposeBanner(bannerView: BannerView) {
DisposableEffect(key1 = true) {
onDispose {
bannerView.destroyAd()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:“@Composable 调用只能在 @Composable 函数的上下文中发生”
可以做我想做的事吗?
可组合性是一个函数。您不能对函数进行扩展。该错误清楚地表明您正在尝试在不可组合函数中使用可组合DisposableEffect函数(这是一个不呈现任何 ui 的普通可组合函数)。
你想太多了。有很多可组合项不呈现任何 UI。@Composable注释不以任何方式绑定到 UI。所以做一个不渲染任何东西的可组合函数是完全没问题的