pref: 性能优化
This commit is contained in:
parent
ce69d9e2c1
commit
fe1a0f2105
|
|
@ -1,17 +1,27 @@
|
|||
package com.huanchengfly.tieba.post.arch
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.produceState
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.*
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.flowWithLifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.asFlow
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.filterIsInstance
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
|
|
@ -23,15 +33,24 @@ fun <T> Flow<T>.collectIn(
|
|||
flowWithLifecycle(lifecycleOwner.lifecycle, minActiveState).collect(action)
|
||||
}
|
||||
|
||||
@SuppressLint("FlowOperatorInvokedInComposition")
|
||||
@Composable
|
||||
fun <T : UiState, A> Flow<T>.collectPartialAsState(
|
||||
prop1: KProperty1<T, A>,
|
||||
initial: A,
|
||||
): State<A> {
|
||||
return map { prop1.get(it) }
|
||||
.distinctUntilChanged()
|
||||
.collectAsState(initial = initial)
|
||||
return produceState(
|
||||
initialValue = initial,
|
||||
key1 = this,
|
||||
key2 = prop1,
|
||||
key3 = initial
|
||||
) {
|
||||
this@collectPartialAsState
|
||||
.map { prop1.get(it) }
|
||||
.distinctUntilChanged()
|
||||
.collect {
|
||||
value = it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <reified Event : UiEvent> CoroutineScope.onEvent(
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@ import androidx.compose.runtime.Stable
|
|||
import org.litepal.crud.LitePalSupport
|
||||
|
||||
@Stable
|
||||
data class Account(
|
||||
var uid: String,
|
||||
var name: String,
|
||||
var bduss: String,
|
||||
var tbs: String,
|
||||
var portrait: String,
|
||||
var sToken: String,
|
||||
var cookie: String,
|
||||
data class Account @JvmOverloads constructor(
|
||||
var uid: String = "",
|
||||
var name: String = "",
|
||||
var bduss: String = "",
|
||||
var tbs: String = "",
|
||||
var portrait: String = "",
|
||||
var sToken: String = "",
|
||||
var cookie: String = "",
|
||||
var nameShow: String? = null,
|
||||
var intro: String? = null,
|
||||
var sex: String? = null,
|
||||
|
|
|
|||
Loading…
Reference in New Issue