return 来自数据存储首选项的整数值
return int value from dataStore preferences
我有一个应用程序,我在其中使用数据存储首选项保存 int
值,当我获得该值时,我执行代码并想要 return 那个 int
值所以我可以在我的代码中的不同地方使用它,但无法弄清楚,如果有人可以提供帮助,请先谢谢你
我尝试让全局成员分配该值,然后 return 但由于该值是 return 异步编辑的,因此应用程序崩溃了。
- 这是我的代码
private fun setTextSize() : Int {
val dataStore = requireContext().createDataStore("textSize")
lifecycleScope.launch {
dataStore.data.collect {
val textSize = it[Common.TEXT_SIZE_PREFERENCE]
}
}
}
如果你想直接获取值你应该使用runBlocking
。
这样的事情应该可以解决问题:
val textSize = runBlocking { dataStore.data.first() }[Common.TEXT_SIZE_PREFERENCE]
您可以将 suspend
修饰符添加到您的函数中,并使用 CoroutineScope
作为
访问它
suspend fun setTextSize() = dataStore.data.firstOrNull()[Common.TEXT_SIZE_PREFERENCE] ?: -1
正在访问
lifeCycleScope.launch{
val textSize = setTextSize()
}
我有一个应用程序,我在其中使用数据存储首选项保存 int
值,当我获得该值时,我执行代码并想要 return 那个 int
值所以我可以在我的代码中的不同地方使用它,但无法弄清楚,如果有人可以提供帮助,请先谢谢你
我尝试让全局成员分配该值,然后 return 但由于该值是 return 异步编辑的,因此应用程序崩溃了。
- 这是我的代码
private fun setTextSize() : Int {
val dataStore = requireContext().createDataStore("textSize")
lifecycleScope.launch {
dataStore.data.collect {
val textSize = it[Common.TEXT_SIZE_PREFERENCE]
}
}
}
如果你想直接获取值你应该使用runBlocking
。
这样的事情应该可以解决问题:
val textSize = runBlocking { dataStore.data.first() }[Common.TEXT_SIZE_PREFERENCE]
您可以将 suspend
修饰符添加到您的函数中,并使用 CoroutineScope
作为
suspend fun setTextSize() = dataStore.data.firstOrNull()[Common.TEXT_SIZE_PREFERENCE] ?: -1
正在访问
lifeCycleScope.launch{
val textSize = setTextSize()
}