Snackbar несколько раз перекомпоновывается при навигации ⇐ Android
-
Anonymous
Snackbar несколько раз перекомпоновывается при навигации
Итак, NavHost много раз перекомпоновывает мой экран (я думаю, это каждый кадр анимации), и это запускает мою лямбду showSnackBar примерно 5 раз, иногда даже больше, я пытаюсь распространить ее из компонуемого себя в MainActivity, который показывает снэкбар, но он перекомпоновывается несколько раз.
NavHost(...) { composable (NavigationScreens.ProfileScreen.route, enterTransition = { слайдИнтоКонтейнер( AnimatedContentTransitionScope.SlideDirection.Left, анимацияSpec = твин (300) ) }, выходПереход = { слайдOutOfContainer( AnimatedContentTransitionScope.SlideDirection.Right, анимацияSpec = tween(300) ) }) { trackScreen(NavigationScreens.ProfileScreen.route) val viewModel: ProfileViewModel = hiltViewModel() val uiState = viewModel.uiState.collectAsStateWithLifecycle().value ПрофильЭкран( uiState = uiState, onNavigateBackToLogin = { navController.navigate(NavigationScreens.LoginGraph.route) { popUpTo(NavigationScreens.ProfileScreen.route) { включительно = правда } запускSingleTop = правда } }, showSnackBarMessage = showSnackBarMessage, ) } } Похоже, когда я перехожу к другому составному элементу, showSnackBarMessage = showSnackBarMessage срабатывает несколько раз
Я не хочу размещать Snackbar внутри ProfileScreen, вместо этого я хочу распространить его на MainActivity, который я использую, как
Scaffold( scaffoldState = appState.scaffoldState, topBar = { TopAppBarComposable (navController = navController) }, BottomBar = { BottomBarNavigation (navController = navController) }, фонЦвет = Цвет.Черный ) { Навигационныйграфик( модификатор = Modifier.padding(bottom = it.calculateBottomPadding()), navController = navController, showSnackBarMessage = {сообщение, showError, продолжительность -> appState.showSnackbar(сообщение = сообщение, ошибка = showError, продолжительность = продолжительность) } ) } Как это исправить?
Итак, NavHost много раз перекомпоновывает мой экран (я думаю, это каждый кадр анимации), и это запускает мою лямбду showSnackBar примерно 5 раз, иногда даже больше, я пытаюсь распространить ее из компонуемого себя в MainActivity, который показывает снэкбар, но он перекомпоновывается несколько раз.
NavHost(...) { composable (NavigationScreens.ProfileScreen.route, enterTransition = { слайдИнтоКонтейнер( AnimatedContentTransitionScope.SlideDirection.Left, анимацияSpec = твин (300) ) }, выходПереход = { слайдOutOfContainer( AnimatedContentTransitionScope.SlideDirection.Right, анимацияSpec = tween(300) ) }) { trackScreen(NavigationScreens.ProfileScreen.route) val viewModel: ProfileViewModel = hiltViewModel() val uiState = viewModel.uiState.collectAsStateWithLifecycle().value ПрофильЭкран( uiState = uiState, onNavigateBackToLogin = { navController.navigate(NavigationScreens.LoginGraph.route) { popUpTo(NavigationScreens.ProfileScreen.route) { включительно = правда } запускSingleTop = правда } }, showSnackBarMessage = showSnackBarMessage, ) } } Похоже, когда я перехожу к другому составному элементу, showSnackBarMessage = showSnackBarMessage срабатывает несколько раз
Я не хочу размещать Snackbar внутри ProfileScreen, вместо этого я хочу распространить его на MainActivity, который я использую, как
Scaffold( scaffoldState = appState.scaffoldState, topBar = { TopAppBarComposable (navController = navController) }, BottomBar = { BottomBarNavigation (navController = navController) }, фонЦвет = Цвет.Черный ) { Навигационныйграфик( модификатор = Modifier.padding(bottom = it.calculateBottomPadding()), navController = navController, showSnackBarMessage = {сообщение, showError, продолжительность -> appState.showSnackbar(сообщение = сообщение, ошибка = showError, продолжительность = продолжительность) } ) } Как это исправить?
Мобильная версия