Skip to content

Instantly share code, notes, and snippets.

View DimovskiD's full-sized avatar

Daniel Dimovski DimovskiD

View GitHub Profile
@Composable
fun SplashScreen(
modifier: Modifier = Modifier,
valid: Boolean?,
onStart: () -> Unit,
onSplashEndedValid: () -> Unit,
onSplashEndedInvalid: () -> Unit,
) {
val lifecycleOwner = LocalLifecycleOwner.current
val color = remember { Animatable(Color.Black) }
val currentValid = rememberUpdatedState(newValue = valid)
LaunchedEffect(key1 = null) {
delay(splashDelay)
if (currentValid.value == true) onSplashEndedValid()
else onSplashEndedInvalid()
}
LaunchedEffect(key1 = null) {
delay(splashDelay)
if (valid == true) onSplashEndedValid()
else onSplashEndedInvalid()
}
LaunchedEffect(key1 = null) {
delay(splashDelay)
onSplashEnded()
}
LaunchedEffect(key1 = valid) {
valid?.let { valid ->
val animateToColor = if (valid) Color.Green else Color.Red
color.animateTo(animateToColor, animationSpec = tween(500))
}
}
@Composable
fun SplashScreen(
modifier: Modifier = Modifier,
valid: Boolean?,
) {
val color = remember { Animatable(Color.Black) }
valid?.let { valid ->
val animateToColor = if (valid) Color.Green else Color.Red
color.animateTo(animateToColor, animationSpec = tween(500))
@Composable
fun SplashScreen(
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
class MainApp : Application() {
override fun onCreate() {
super.onCreate()
initKoin(
module {
single<Context> { this@MainApp }
single<SharedPreferences> {
get<Context>().getSharedPreferences("CHESS_CLOCK_SETTINGS", Context.MODE_PRIVATE)
}
actual abstract class ViewModel {
actual val viewModelScope = MainScope()
protected actual open fun onCleared() { }
fun clear() {
onCleared()
viewModelScope.cancel()
}
import kotlinx.coroutines.CoroutineScope
import androidx.lifecycle.ViewModel as AndroidXViewModel
import androidx.lifecycle.viewModelScope as androidXViewModelScope
actual abstract class ViewModel actual constructor() : AndroidXViewModel() {
actual val viewModelScope: CoroutineScope = androidXViewModelScope
actual override fun onCleared() {
super.onCleared()
}