前提概要

Compose Multiplatform 是从 Android 的 Jetpack Compose 发展而来的。

所以 Compose 在 Android 上功能最完善,其次是 Desktop 平台。

由于我要给自己项目写个前端界面,而后端用的是 Kotlin(JVM) 且没有封装网页接口,

最终自然就做成了桌面图形软件。这里我们专注讨论 Desktop 平台。

官方的预览插件

Jetpack Compose 本身带有 IDE 预览功能,JetBrains 官方也提供了 Desktop 平台的对应支持。

使用它需要安装 Compose Multiplatform IDE Support 插件。

虽然插件说明写着支持多平台预览,但实际只对 Desktop 平台有效。理论上你可以通过添加桌面平台并做些适配来预览,但它的问题实在不少:

  • 存在两个 Preview 注解:org.jetbrains.compose.ui.tooling.preview.Previewandroidx.compose.desktop.ui.tooling.preview.Preview,只有后者能用
  • 预览宽度会随窗口调整,但高度固定不变,而且不支持缩放和滚动。如果布局超出窗口范围,下面的内容就直接看不见了
  • 缺少 Android 平台那样的交互模式和层次查看器
  • 经常无法更新:代码一旦出错就卡在 Rendering Preview 状态,想看错误信息?

    得去翻 IDEA 的日志。更糟的是,你得靠重命名预览函数才能让它重新工作
  • 一次只能看一个预览,多个组件就得来回切换

第三方开发者的预览插件

推荐试试 Compose Multiplatform HotPreview(Timo Drick 开发的插件),它的体验更接近 Android 平台预览:

  • 错误信息直接显示在预览界面,不用像官方插件那样猜问题
  • 支持同时展示多个预览
  • 基本功能稳定可靠
  • 可以通过注解设置屏幕尺寸

相关链接:

废话

  • 桌面端问题一堆,但是compose的声明布局方式和web布局一样灵活,没有javafx和swing那么麻烦。
  • IDEA的bug,在调试模式更改commonMain的界面代码,点击进行代码热重新,IDEA表示代码没有更新啊,2025.1之后的版本呢不知道会不会修复。
  • 更新IDEA到2025.1之后这个预览插件用不了了,悲。

[Compose Multiplatform Desktop] 比官方更好的Compose预览的更多相关文章

  1. 根据 Power BI Desktop(预览版)中的报表页创建工具提示

    根据 Power BI Desktop 中创建的报表页,可创建直观丰富的报表工具提示,这些提示在你将鼠标悬停在视觉对象上时显示. 通过创建用作工具提示的报表页,使自定义工具提示包含视觉对象.图像以及在 ...

  2. Win10《芒果TV - Preview》官方指定预览版 - 重要使用注意事项

    Win10<芒果TV - Preview>官方指定预览版,最新的改进和功能更新将会此版本优先体验. 重要使用注意事项: 1.因为方便过审核,默认将会员相关的操作提示简化: 2.使用中务必手 ...

  3. 更强大的远程开发,Remote Tunnels 正式发布预览版!

    Visual Studio Code 的核心是一个代码编辑器,它通过我们的远程开发经验与其他环境集成,变得更加强大和灵活: 你可能没有想到,但 VS Code 有一个内置的命令行界面(CLI),可以让 ...

  4. windows10 预览版 中英文官方下载地址+激活密钥+网盘分享

    windows10 预览版 中英文官方下载地址+激活密钥+网盘分享 产品密钥:NKJFK-GPHP7-G8C3J-P6JXR-HQRJR 英语 64 位 (x64)  http://iso.esd.m ...

  5. 自己动手开发更好用的markdown编辑器-04(实时预览)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/   程序打包   文章目录 1. 打开新窗口 ...

  6. 【官方免费】Apple Silicon M1 + Parallels 16技术预览版 + Win 10 arm64

    期待了好久,终于能用pd运行win10了,其实也就想写个c++,mac上配置个c++编译器太麻烦了.. 步骤: 打开 https://my.parallels.com/desktop/beta,这里下 ...

  7. 解决微信官方SDK给出1.4.0等版本没有预览文件(previewFile)等接口

    使用苹果手机测试 调用微信的js-sdk在系统中实现上传.预览附件的功能.在自己的手机测试通过后,直接丢给QA测试了 本以为相安无事了,没想到QA用安卓手机测的时候居然不得,使用的是下载下来的jwei ...

  8. JWFD开源项目官方网站预览

    自己做的...感觉还比较正规哈....JWFD开源项目还是需要一个官方网站的...

  9. [Recompose] Compose Streams of React Props with Recompose’s compose and RxJS

    Functions created with mapPropsStream canned be composed together to build up powerful streams. Brin ...

  10. h5可预览 图片ajax上传 (补更),后台数据获取方法---php

    原理是 先获取,然后手动转移文件路径,不然会被服务器自动删除 demo如下: <?php header('content-Type:text/html;charset=utf-8'); $fil ...

随机推荐

  1. C++宏定义中可变参数列表__VA_ARGS__ 及 QT 提供的宏 QT_OVERLOADED_MACRO

    1. 基本用法 VA_ARGS 是 C/C++ 中的预定义宏,用于在宏定义中表示可变参数列表(Variadic Arguments),需与省略号 ... 配合使用.其核心作用是将宏调用中的可变参数原样 ...

  2. Java 21 新特性

    Java 21 是 Java 语言的一次重要更新,引入了若干新的特性,提升了开发者的编程效率和代码质量.本文将详细介绍 Java 21 的新特性,包括基础概念.使用方法.常见实践以及最佳实践. 简介 ...

  3. python爬虫(BeautifulSoup)爬取B站视频字幕

    比如"https://www.bilibili.com/video/BV1zU4y1p7L3"这个视频,有1.2万条弹幕 首先,B站视频的弹幕是有专门的接口传递数据的:http:/ ...

  4. [not]exists和[not]in的区别

    前言:近期在处理业务实际问题时发现使用in导致查询速度非常慢,于是查阅资料后发现使用exists能极大缩短查询时间,于是便将此经历记录下来. 数据源: grade表 stu_info表 exists与 ...

  5. Sentinel源码—6.熔断降级和数据统计的实现

    大纲 1.DegradeSlot实现熔断降级的原理与源码 2.Sentinel数据指标统计的滑动窗口算法 1.DegradeSlot实现熔断降级的原理与源码 (1)熔断降级规则DegradeRule的 ...

  6. HttpServletRequest相关

    简介 获取客户端请求头及参数 获取提交给服务器的中文数据 简介 这个对象封装了客户端提交过来的一切数据. 获取客户端请求头及参数 package com.zhujunwei.httpServletRe ...

  7. 代码随想录第二十七天 | Leecode 455. 分发饼干、 376. 摆动序列、 53. 最大子数组和

    Leecode 455. 分发饼干 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的 ...

  8. java基础之“深复制和浅复制的区别”

    一.浅复制 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都任然指向原来的对象. 二.深复制 深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用对象 三.举例 产品 ...

  9. git管理Unity项目

    git管理Unity项目的正确打开方式 在创建仓库的时候进行初始化仓库,选择.gitignore模版的时候选择Unity,就能自动过滤不需要的文件 原文链接:https://blog.csdn.net ...

  10. 字节大模型应用开发框架 Eino 全解(一)|结合 RAG 知识库案例分析框架生态

    前言 大家好,这里是白泽,Eino 是字节开源的 Golang 大模型应用开发框架,诸如豆包.扣子等 Agent 应用或工作流都是借助这个框架进行开发. 我将通过<字节大模型应用开发框架 Ein ...