Request recomposition after view gets created

This commit is contained in:
FooIbar committed 2023-10-25 23:51:09 +08:00
1 parent d34075d29d
commit 717cbe7630
2 files changed
+13

No files matched your search

@@ -47,6 +47,7 @@ import androidx.compose.material3.NavigationDrawerItem
import androidx.compose.material3.Text
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.currentRecomposeScope
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberCoroutineScope
@@ -197,6 +198,11 @@ class MainActivity : EhActivity() {
var drawerLocked by mutableStateOf(false)
private var openDrawerFlow = MutableSharedFlow<Unit>(extraBufferCapacity = 1)
private var recomposeFlow = MutableSharedFlow<Unit>(extraBufferCapacity = 1)
fun recompose() {
recomposeFlow.tryEmit(Unit)
}
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
@@ -205,6 +211,7 @@ class MainActivity : EhActivity() {
setMD3Content {
val drawerState = rememberDrawerState(DrawerValue.Closed)
val scope = rememberCoroutineScope()
val recomposeScope = currentRecomposeScope
fun isSelected(id: Int) = ::navController.isInitialized && id == navController.currentDestination?.id
fun closeDrawer() = scope.launch { drawerState.close() }
LaunchedEffect(Unit) {
@@ -212,6 +219,11 @@ class MainActivity : EhActivity() {
drawerState.open()
}
}
LaunchedEffect(Unit) {
recomposeFlow.collect {
recomposeScope.invalidate()
}
}
BackHandler(drawerState.isOpen) {
closeDrawer()
}
@@ -128,6 +128,7 @@ abstract class BaseScene : Fragment() {
setContentView(it)
}
}
mainActivity?.recompose()
}
override fun onDestroyView() {