我有一个应用程序大量使用 Jetpack Compose 的实验性功能,因此我必须在可组合项上声明一堆注释。由于这些注释要求调用者也声明它们,所以我最终遇到了一种情况,即我有一个使用以下代码的活动:
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.ui.ExperimentalComposeUiApi
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.permissions.ExperimentalPermissionsApi
…
class MainActivity : AppCompatActivity() {
@ExperimentalPermissionsApi
@ExperimentalComposeUiApi
@ExperimentalPagerApi
@ExperimentalMaterialNavigationApi
@ExperimentalMaterialApi
override fun onCreate(savedInstanceState: Bundle?) {
// … wiring up compose code (which propagates the experimental annotations)
避免这种情况的另一种方法是使用,@OptIn
但由于每个声明只允许一个,因此它不适用于具有多个实验性功能的我的情况。
无论如何……这很好用——在 Kotlin 1.5 中。
使用 Kotlin 1.6 我收到编译错误:
覆盖上的选择加入要求标记注释需要基本声明上的相同标记
但是基本声明在我无法更改的标准 API 中。 我怎样才能使这个编译(并像以前一样工作)?