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

参考

相关推荐
生椰拿铁You2 分钟前
09 —— Webpack搭建开发环境
前端·webpack·node.js
狸克先生14 分钟前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
baiduopenmap28 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
loooseFish36 分钟前
小程序webview我爱死你了 小程序webview和H5通讯
前端
请叫我欧皇i1 小时前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
533_1 小时前
[vue] 深拷贝 lodash cloneDeep
前端·javascript·vue.js
guokanglun1 小时前
空间数据存储格式GeoJSON
前端
zhang-zan1 小时前
nodejs操作selenium-webdriver
前端·javascript·selenium
猫爪笔记2 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
brief of gali2 小时前
记录一个奇怪的前端布局现象
前端