How to show snackbars from Composables or ViewModels on a multi-module, single activity, Compose only, project(如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏)
问题描述
在多模块、单模块上显示Snackbar的最佳方式是什么 活动,是否仅撰写项目?项目依赖关系图如下所示:
项目的唯一活动在app
模块内,它just sets the NavHost
as content。
将在NavHost
上显示的每个feature
模块provides a list of composable screens。
每个屏幕都有its own Scaffold
,因此可以轻松地从每个屏幕的ViewModel
显示快捷栏。
feature
模块feature-debug
,它显示在each feature
module提供的a list of composable屏幕上,称为调试节。它用于允许任何feature
模块在调试屏幕内自动显示某些设置。
每个调试节都有自己的ViewModel
,因此它的工作方式与屏幕完全相同。但它缺少一个脚手架,因为它只占了屏幕的一部分:
+-------------------------+
| Debug screen |
|-------------------------+
| |
| Feature A debug section |
| |
|------------------------ +
| |
| Feature B debug section |
| |
|------------------------ +
| |
| Feature C debug section |
| |
|------------------------ +
| |
| Feature D debug section |
| |
+------------------------ +
因此,我不确定如何在feature-debug
屏幕的Scaffold上显示Snackbar,该Snackbar来自在另一个feature
模块中声明的、没有任何类可见性的feature-debug
模块。
推荐答案
我只会为您的整个应用程序使用一个Snackbar。它需要包含在用户界面层次结构的根级别,并可通过全局对象访问。这可以通过使用从Application继承的类并在该类中放置一个方法来处理SnackBar的显示来完成。
有一个示例应用程序展示了如何做到这一点。演示应用程序可在以下位置下载:
https://github.com/JohannBlake/Jetmagic
运行该应用程序时,打开导航任务栏并选择任何导航项目。在出现的屏幕上,单击标记为Return value from another screen
的按钮。这将把您带到另一个屏幕,您可以在其中选择一个项目并返回到上一个屏幕。所选项目将显示在快餐栏中。此快餐栏在整个应用程序中都是全局的。
这篇关于如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏
基础教程推荐
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01