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"代码操作。
  • 在预览中添加了带有样式选择器的工具栏。

参考

相关推荐
逐·風3 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫4 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦4 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子5 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
hikktn5 小时前
如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
c语言·安全·rust
睡觉谁叫~~~5 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
音徽编程5 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
毕业设计制作和分享5 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
清灵xmf7 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询