Rust UI 框架:Slint 1.3 发布,改进原生样式和 JavaScript API,尝试支持使用 Slint 构建 Android 应用

近日,Slint 发布了 1.3 版本,引入许多增强开发体验的新功能和改进。来看一下 Slint 的主要更新点吧:

为 Windows 和 Mac 引入新的默认原生样式

新版本Slint中 更改默认风格样式,以提供更真实的 Windows 和 macOS 界面。Windows 上采用 Fluent 风格样式,Mac 上则采用 Cupertino 风格样式。对于 Linux,Slint 继续使用可用的 Qt,这样可以确保始终如一的"原生"Linux 感觉。

Mac 上的Cupertino风格:

Windows 上的 Fluent 风格:

基于 napi-rs 的 NodeJS API

可以使用napi-rs crate 进行 NodeJS 集成。Slint 现在与所有最新的 NodeJS 版本兼容,并允许集成到 NodeJS 事件循环中。如果你在寻找 Electron 的替代方案的开发人员,并想在 JavaScript 中创建轻量级 GUI 应用程序,可以考虑使用 Slint。

如果你想要探索了解更多关于在JavaScript 中的 使用 Slint 的知识,可以参阅 Slint 官方的JavaScript 文档教程

启动 Android 版移植开发工作

Slint 开发团队已开始尝试将 Slint 引入 Android,不过目前它还没有准备好投入生产(笔者猜测是方案还不够成熟,既然已经迈出这一步,强烈期待一下),喜欢折腾的同学可以按官方教程尝下鲜。

在 Android 上使用 Slint 构建 GUI ,需要借助 android-activity crate 的 i-slint-backend-android-activity

PS: 这是一个内部 crate,不遵循 semver 版本标准。

可以查看使用文档: Android后端的文档SlintAndroid

简化导入组件库的步骤

现在可以轻松地将组件库导入到代码库中。新版本附带了支持从外部库导入组件的基础设施。库搜索路径在构建脚本中或通过环境变量定义。

以下例子演示了将代码从 foo 库导入 FooWidget

rust 复制代码
import { FooWidget } from "@foo";

更多改进

Slint 1.3版本包含许多错误修复和增强功能:

  • Slint VSCode 插件优化了重构功能;
  • 改进了与 rust-analyzer 分析器的slint!宏集成;
  • TouchArea现在可以接收滚动事件, GridLayout可以有不同的水平或垂直间距值,更多缓动曲线(easing curves)可用于自定义动画,允许一个新组合框预览选择样式;

Slint 1.3.0 版本升级日志

General

  • 最低 Rust 版本是 1.70。
  • 环境SLINT_DEBUG_PERFORMANCE变量现在也与软件渲染器兼容。
  • 修复了省略或对齐的多行文本中的文本渲染和光标定位问题。
  • 更改了默认样式,Windows 上默认fluent,macOS 上默认为cupertino
  • LinuxKMS 后端:添加了对绝对运动指针事件的支持,修复了对缩放屏幕上触摸输入的支持,以及改进了 EGL 渲染的编码器/CRTC 处理。
  • Skia 渲染器/winit 后端:当 GPU 加速不可用时,回退到 Skia 软件渲染。
  • 修复了在同一回调中更改模型数据后访问回调中的模型数据不会反映更新的错误。(#3740)

Slint

  • InputType枚举添加了Number Decimal变体。
  • GridLayout组件新增spacing-horizontalspacing-vertical属性.
  • 修复了结构数组数组中的转换 (#3574)。
  • 添加scroll-event回调到TouchArea.
  • 添加了对函数的protected支持。
  • ComboBox可以通过滚动事件更改选择。
  • SpinBox可以通过滚动事件增加和减少值。
  • 添加focus-changed-event回调到FocusScope.
  • 添加了许多新的缓动曲线(easing curves)。
  • 添加了Spinner

JavaScript

  • 移植到napi-rs。
  • 更新API。

Rust

  • 改进了 rust-analyzer 对slint!宏的支持。
  • 添加source_model()MapModel, FilterModel, SortModel,ReverseModel以访问内部模型。

C++

  • 消除了生成代码中对 C++ 异常的需要。
  • 添加了仅构建 Slint 编译器或使用外部编译器的功能。
  • ESP-IDF:在交换帧缓冲区之前等待垂直同步。
  • 修复了从 Slint 访问空模型时发生的崩溃。

LSP

  • 添加了"Wrap元素"、"Remove元素"、"Repeat元素"和"Make conditional"代码操作。
  • 在预览中添加了带有样式选择器的工具栏。

参考

相关推荐
小白学习日记1 小时前
【复习】HTML常用标签<table>
前端·html
丁总学Java1 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
姜学迁1 小时前
Rust-枚举
开发语言·后端·rust
yanlele2 小时前
前瞻 - 盘点 ES2025 已经定稿的语法规范
前端·javascript·代码规范
凌云行者2 小时前
rust的迭代器方法——collect
开发语言·rust
懒羊羊大王呀2 小时前
CSS——属性值计算
前端·css
DOKE2 小时前
VSCode终端:提升命令行使用体验
前端
xgq2 小时前
使用File System Access API 直接读写本地文件
前端·javascript·面试
用户3157476081352 小时前
前端之路-了解原型和原型链
前端
永远不打烊2 小时前
librtmp 原生API做直播推流
前端