Skip to content

Commit

Permalink
v1.2.2
Browse files Browse the repository at this point in the history
  • Loading branch information
FunnySaltyFish committed Dec 1, 2024
1 parent 77fa026 commit d6328f5
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,23 @@ registerTypeConverters<ExampleBean>(
save = { bean -> Json.encodeToString(bean) },
restore = { str -> Json.decodeFromString(str) }
)
// 或者,如果你只需要对某个 state 编写转换器,可以直接传入 `typeConverter` 参数
// 此参数如有,则其优先级高于 `registerTypeConverters` 方法注册的全局转换器
var array by rememberDataSaverState(
"custom_type_converter_example",
intArrayOf(1, 2, 3, 4, 5),
// 参数类型为 ITypeConverter,这里的 ClassTypeConverter 是基于 type 类型 accept 的子类
typeConverter = object : ClassTypeConverter(type = typeOf<IntArray>()) {
override fun save(data: Any?): String {
return (data as IntArray).joinToString(",")
}
override fun restore(str: String): Any {
return str.split(",").map { it.toInt() }.toIntArray()
}
}
)
```
如果您需要存储可空变量,请使用 `registerTypeConverters<ExampleBean?>`
Expand All @@ -213,9 +230,8 @@ inline fun <reified T> registerTypeConverters(
> **注意:**
>
> 1. registerTypeConverters 请在初始化时调用,确保早于使用 `rememberDataSaverState("key", ExampleBean())` 之前
> 2. 多个类型转换器会按照注册顺序依次尝试,直到找到合适的转换器。因此,如果您注册了多个相同类型的转换器,框架会使用第一个注册的转换器。
> 3. 您可以通过 `DataSaverConverters.typeConverters` 获取到注册的全部转换器列表,初始会有默认的一些,如对 `String``emptyList``emptyMap` 的支持
> 2. 多个类型转换器会按照注册顺序反向依次尝试,直到找到合适的转换器。因此,如果您注册了多个相同类型的转换器,框架会使用**最后一个符合条件的**转换器。
> 3. 您可以通过 `DataSaverConverters.typeConverters` 获取到注册的全部转换器列表,初始会有默认的一些,如对 `String` 的支持
## 在 Composable 函数外使用
Expand Down
19 changes: 18 additions & 1 deletion README_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,23 @@ registerTypeConverters<ExampleBean>(
save = { bean -> Json.encodeToString(bean) },
restore = { str -> Json.decodeFromString(str) }
)
// If you only need to convert a specific state, you can pass the converter directly to the `rememberDataSaverState` function
// The priority of the converter will be higher than the global converter registered by `registerTypeConverters`
var array by rememberDataSaverState(
"custom_type_converter_example",
intArrayOf(1, 2, 3, 4, 5),
// the parameter type is ITypeConverter, the ClassTypeConverter is a subclass of type accepting by type
typeConverter = object : ClassTypeConverter(type = typeOf<IntArray>()) {
override fun save(data: Any?): String {
return (data as IntArray).joinToString(",")
}
override fun restore(str: String): Any {
return str.split(",").map { it.toInt() }.toIntArray()
}
}
)
```
If you need to store nullable variables, please use `registerTypeConverters<ExampleBean?>`.
Expand All @@ -206,7 +223,7 @@ The framework will call the corresponding `save` and `restore` methods to conver
> 1. Please call `registerTypeConverters` during initialization to ensure it is called before using `rememberDataSaverState("key", ExampleBean())`.
> 2. Multiple type converters will be tried in the order of registration until a suitable converter is found. Therefore, if you register multiple converters of the same type, the framework will use the first registered converter.
> 3. You can access the list of all registered converters through `DataSaverConverters.typeConverters`. Some default converters are initially provided, such as support for `String`, `emptyList`, and `emptyMap`.
> 3. You can access the list of all registered converters through `DataSaverConverters.typeConverters`. Some default converters are initially provided, such as support for `String`
## Using Outside of Composable Functions
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
agp = "8.6.0"
group = "io.github.FunnySaltyFish"
project = "1.2.1"
project = "1.2.2"
android-compileSdk = "34"
android-minSdk = "24"
android-targetSdk = "34"
Expand Down

0 comments on commit d6328f5

Please sign in to comment.