我正在使用类型安全导航构建一个应用程序。
目的地
@Serializable
data object OwnerGraph {
@Serializable
data object HistoryGraph {
@Serializable
data object HistoryScreen
}
}
导航图:
fun NavGraphBuilder.historyScreenOwnerNavGraph() {
navigation<OwnerGraph.HistoryGraph>(
startDestination = OwnerGraph.HistoryGraph.HistoryScreen
) {
composable<OwnerGraph.HistoryGraph.HistoryScreen> { navBackStackEntry ->
val navHostController = LocalNavHostContoller.current
Text("History Screen")
}
}
}
导航主机
NavHost(
navController = navController,
startDestination = startingNavigationGraph,
modifier = Modifier
.padding(paddingValues)
.consumeWindowInsets(paddingValues)
) {
historyScreenOwnerNavGraph()
}
当我运行该应用程序时,我收到此错误:
kotlinx.serialization.SerializationException: Serializer for class 'OwnerGraph$HistoryGraph' is not found.
Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.
但是我应用了插件并添加了相应的库。
奇怪的是,这只是我整个代码库的一部分。
我也在其他地方使用这种结构,并且没有出现这样的崩溃。
但是突然之间这个特别的问题出现了。
我想想象一下我的类型安全图的这种结构,这使它更容易理解。
注意:仅当我在启用 R8 且处于发布版本的情况下运行应用程序时,才会发生崩溃
确保您从 @kotlinx.serialization.Serialized 导入并在 build.gradle 中正确设置插件,
模块: id("org.jetbrains.kotlin.plugin.serialization") 版本“1.7.10”适用 false
应用程序: id(“org.jetbrains.kotlin.plugin.序列化”)
然后尝试将起始目的地设置为,startDestination = OwnerGraph.HistoryGraph