问题标签 [compose-multiplatform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
502 浏览

kotlin - Compose - 为什么 API 的跨平台不一致?

我一直在使用 Android 上的 Jetpack Compose,并且玩得很开心!然后我决定尝试 compose for desktop,我也非常喜欢!

好吧,我需要尝试 compose for web,我期待找到相同的 API,但实际上我发现我有用于 web 元素的 DSL 包装器。

虽然我完全理解需要特定于目标的 DSL,但我不明白我们缺少基本的小部件,如、Row等。ColumnBox

这是为什么?

0 投票
1 回答
47 浏览

kotlin - 单击 Compose Multiplatform 中的其他位置时如何清除 BasicTextField 的焦点?

我有一个BasicTextField用于桌面的 Jetbrains Compose Multiplatform。当我单击它时,TextField 获得焦点并变为可编辑。但是,当我单击应用程序中的其他位置时,焦点不会丢失,并且该字段仍然可以编辑,就像我刚刚单击它一样。

我知道这种行为是正常的和有意的。尽管如此,当用户点击其他地方时,我希望 TextField 变得不集中,无论它是可点击的还是不可点击的组合。

我如何实现这一目标?

0 投票
0 回答
16 浏览

compose-multiplatform - Column(Modifier = ..., () -> Unit): Unit' 已弃用。compose.web.web-widgets API 已弃用

当我开始学习 compose multiplatform for WEB 时,我遇到了column is deprecated的问题。代替它有什么用?

0 投票
0 回答
63 浏览

kotlin - 有没有办法在 Compose Multiplatform Project 中重用“常见”的东西,比如 DropdownMenu?

对于桌面,DropdownMenu 由 Gradle 提供:org.jetbrains.compose.material:material-desktop:1.0.1-rc2;对于 Android,它在 Gradle 中:androidx.compose.material:material:1.1.0-beta04@aar

我原以为会有一个共同的 API 都实现了。

我知道我可以定义自己的接口/适配器,然后插入特定于设备的版本,但我想知道是否有一个聪明的惯用 Kotlin 方法来做到这一点。

我尝试使用“期望”和“实际”,但我可以弄清楚语法。(DropdownMenu 没有像期望/实际使用示例中那样的简单签名)。

这是我正在使用的菜单示例...... Android 和桌面版本看起来相同:

我正在寻找一种将其移动到 Common 文件夹而不是重复代码的方法。

我最终这样做了;我创建了一个界面:

然后是一个小对象进行转发:

我仍然很好奇是否有更 Kotlin 的方式来做这件事:)

0 投票
0 回答
41 浏览

kotlin - Kotlin Compose Desktop,我可以将文件路径从我的应用程序拖到第三方应用程序吗?

如果我使用 Kotlin Compose Desktop 创建 Windows/Linux 桌面应用程序,我可以将文件(即文件路径)从我的应用程序拖到另一个应用程序中吗?我可以使用以下两行代码在 C# (WinForms) 中相对地做到这一点:

在此处输入图像描述

0 投票
0 回答
11 浏览

compose-multiplatform - 如何在 Compose Desktop 中实现多窗口

我正在尝试使用 compose 创建一个多窗口桌面应用程序。

他们将拥有完全不同的屏幕。一个是主屏幕,另一个是子屏幕。我试过这样。

子屏幕旨在由共享演示器内的某些状态流显示,它将在主屏幕上调用为 true,但为了使代码简短,我已经删除了该部分。

}

此代码导致此异常。

此错误发生在主屏幕窗口上,并且没有显示任何内容。

这是什么意思?是否允许多个窗口,因为有 SingleWindowApplication 之类的东西?

我能做些什么 ?

0 投票
1 回答
95 浏览

compose-desktop - JetBrains Compose for Desktop 标题栏背景颜色或深色模式

JetBrains Compose for Desktop 中是否可以更改标题栏背景颜色或仅将其更改为暗模式?我使用的是 MacOS,所以条形图可以是亮的或暗的。也可以让标题栏本身不可见(但保留关闭、最小化和最大化按钮)并在其下方创建自己的视图。

我正在查看撰写窗口代码,但在那里找不到。

0 投票
1 回答
32 浏览

kotlin - 为什么可滚动修饰符不滚动视图内容?

我正在尝试滚动以在Column条目数可能超过窗口高度的情况下工作。

我目前正在使用 Compose 1.1.0-rc03,目前我只是想让它在桌面上运行。

我将问题简化为:

但这不会滚动,或者至少不会滚动鼠标滚轮。也许还有另一种滚动方式对我来说不是很明显。

我该如何进行这项工作?

上的文档scrollable说我可能必须自己管理状态。那么使用rememberScrollState()还不够吗?

我发现了一些关于禁用列滚动的现有问题,但他们总是在谈论LazyColumn我在这里没有使用的问题。

0 投票
1 回答
34 浏览

kotlin - 无法在 Kotlin Multiplatform 中使用字体

很简单;刚刚从向导创建了一个 Compose Multiplatform 项目。

继续创建主题;但我想使用相同的字体,所以我poppins.ttfcommonMain/resources/font/.

然后我在commonMain模块中声明了以下内容:

commonDesktop我使用的模块上:

太好了,这行得通。现在开始commonAndroid

由于某种原因,R该类没有正确生成,我无法使用R.font.poppins.

如果我将“资源”重命名为“res”并将字体推入,res/font/那么它就可以工作。(但我只是复制了字体文件)。

我该如何解决这个问题?

0 投票
1 回答
27 浏览

kotlin - 如何在 Jetpack Compose 中以便携的方式实现计时器?

我想写一些应用程序,我希望某些事情按计划发生。

每隔几分钟轮询一次 URL 以获取更新似乎是一个相当常见的用例。不过,在这种特殊情况下,我只是想实现一个时钟。

这有效:

但是我必须 import java.util.Timer,所以它不会是便携式的。

Jetpack Compose 可以做动画,所以它肯定在某个地方有自己的计时器,这意味着应该有一些可移植的方式来做到这一点,但我似乎无法弄清楚。

有没有一种跨平台的方式来为此目的获取计时器?