如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏 [英] How to show snackbars from Composables or ViewModels on a multi-module, single activity, Compose only, project

查看:16
本文介绍了如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在多模块、单模块上显示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的按钮。这将把您带到另一个屏幕,您可以在其中选择一个项目并返回到上一个屏幕。所选项目将显示在快餐栏中。此快餐栏在整个应用程序中都是全局的。

这篇关于如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆