Jetpack Compose对接Stream Chat时GridCells类型不匹配问题
问题根因
- 该类型不匹配问题由Jetpack Compose Lazy Grid组件的官方API包路径迭代导致:
- Compose 1.2.x及更早稳定版中,
GridCells类位于androidx.compose.foundation.lazy.GridCells路径,属于旧版Lazy Grid API体系 - 从Compose 1.3.0-alpha01版本开始,官方将Lazy网格相关API拆分到独立子包,
GridCells路径变更为androidx.compose.foundation.lazy.grid.GridCells,旧路径下的类被直接移除
- Compose 1.2.x及更早稳定版中,
- 你引入的
io.getstream:stream-chat-android-compose:5.5.0版本是基于Compose 1.2.x版本编译的,组件参数要求传入旧路径的GridCells,和你当前使用的新版Compose alpha环境下的类路径完全不兼容,因此无法传参。
解决方案
二选一即可,不要混用:
方案1(推荐,稳定性最高)
将项目Compose版本降级到Stream Chat 5.5.0适配的稳定版本,修改gradle配置中的版本号:
compose_version = '1.2.1'
修改后同步Gradle依赖,当前代码中创建的GridCells.Fixed(5)会自动匹配到旧路径类,不需要修改任何业务代码即可正常编译运行。
方案2(需保留Compose 1.3.x版本时使用)
如果必须使用Compose 1.3.0-alpha01的新特性,将Stream Chat Compose依赖升级到适配了新Lazy Grid API的版本:
implementation 'io.getstream:stream-chat-android-compose:5.7.0'
升级后ReactionsPicker组件的cells参数会改为接收新路径下的androidx.compose.foundation.lazy.grid.GridCells类型,和当前环境的类路径匹配,可正常传参。
注意事项
- 禁止通过强制类型转换、手动重命名导包的方式混用两个不同路径的
GridCells类,二者包名不同属于完全独立的类,强转只会在运行时抛出ClassCastException。 1.3.0-alpha01属于Compose早期预览版本,存在大量未完成的API变更和已知稳定性问题,非必要不要在正式项目中使用alpha版本的Compose依赖。
内容的提问来源于stack exchange,提问作者Instancer
相关产品推荐
相关产品推荐

