[英]Jetpack Compose navigate only some section of screen and let pages show Toolbar from root Composable
[英]Show Snackbar in MainActivity (root @Composable) from any child composable (Jetpack Compose)
我想在任何子@Composable
的 MainActivity (根可组合)中显示一个小吃栏。
我的第一个想法是使用CompositionLocalProvider
提供SnackbarHostState
但这似乎不起作用(或者我做错了)。
val mainSnackBarHostState = remember { SnackbarHostState() }
val SnackBarHostStateProvider = compositionLocalOf<SnackbarHostState> { mainSnackBarHostState }
CompositionLocalProvider(SnackBarHostStateProvider provides mainSnackBarHostState) {
MainScreenNavigationConfigurations(navController)
}
我的孩子@Composable
似乎无法找到/访问SnackBarHostStateProvider
。
有什么想法吗?
我想说,最好的方法是将小吃店的 state (可见/不可见)存储在您的视图模型中,然后让小吃店从那里读取。 无论何时何地,您想要切换 state,只需更改视图模型中的值,就可以了
如果您不熟悉 viewmodel,这是构建应用程序的推荐和标准方法,请记住,在 Compose 中,推荐的方法是将 state 存储在 viewmodel 中,而不是作为常规变量,而是作为状态持有者。
例如,在您的用例中,您可以将小吃店的可见性状态存储为 mutableStateOf(false),因为初始可见性值为 false。
这假设您可以从整个应用程序访问您的视图模型,开发人员通常会这样做,无论他们需要更新 state,所以,祝您好运
可能您需要将变量SnackBarHostStateProvider
声明为包级变量,以便能够从提供程序和子项访问它。
另请参阅此相关答案: https://stackoverflow.com/a/69905470/293878
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.