Skip to content

v1.2.1 released

Latest
Compare
Choose a tag to compare
@FunnySaltyFish FunnySaltyFish released this 24 Jul 14:45
· 1 commit to master since this release

v1.2.1

破坏性变更:移除 DataSaverListState 及相关类

不再支持 rememberDataSaverListState 以及相关内容。创建此类的初衷是希望能够对 List 的操作做一些优化,但实际上,由于 mutableStateListOf 返回的 SnapshotStateList 也无法被继承,因此在旧版实现中,其相对于 DataSaverState<List<T>> 并无任何性能优势,有些冗余。且新版实现在 findRestorer 上无法传入某一个值,代码不太好写,故最终去除

迁移指南

  • 如果之前没有用到过此类:那么新的直接用 mutableDataSaverState<List<ExampleBean>("key", emptyList()) 这种即可,且需要注册转换器,但务必注明具体泛型。否则此变量将被推断为 List<Any>,转换器无法正常工作
  • 如果之前有用到,且希望保留数据,在迁移到 mutableDataSaverState 的同时,您还需要注册新的转换器以支持 List<Bean>同时,由于之前默认的分隔符是 #@#,与大多数框架的 , 不同,您需要在 restore 时转换一下
registerTypeConverters<ExampleBean>(
	save = { bean -> Json.encodeToString(bean) },
	restore = { str -> Json.decodeFromString(str.replace("#@#", ",")) }
)

其他更改

  • 支持 emptyList/emptyMap 作为默认值(#7
  • 增强 registerTypeConverters,现在除了通过类判断,也可以自行传入判断条件
  • 在 JVM Desktop 端新增 DataSaverEncryptedProperties,用于保存加密的键值对数据
  • 引入了 kotlin-reflect 的依赖库,这是为了多平台做准备。之前的 ::class.java 在 JVM 以外平台无法使用。将在下一版新增其他平台

Full Changelog: v1.2.0...v1.2.1