Flutter 3.24 发布:GPU模块及多视图嵌入功能

Flutter 3.24 发布:GPU模块及多视图嵌入功能

Flutter 3.24 带来了许多新功能和改进,让开发应用程序变得更加容易和有趣。这个版本重点展示了 Flutter GPU 的预览功能,让应用程序可以直接使用高级图形和 3D 场景功能。

此外,网页应用现在可以嵌入多个 Flutter 视图,增加了应用的灵活性。最后,官方还增加了视频广告功能,帮助您通过应用赚钱。

在过去的几个月里,Flutter 社区非常活跃,共有 852 个框架更新和 615 个引擎更新。官方欢迎 49 位新贡献者的加入,正是大家的热情和努力推动了 Flutter 的发展。

让我们来看看 Flutter 3.24 的所有新功能和改进吧!

Flutter 框架

新的 Sliver 组件

此次更新新增了两个 Sliver 组件,用于构建动态的应用程序标题:

  • PinnedHeaderSliver
  • SliverResizingHeader

这些新的 Sliver 可以帮助您创建可以浮动、固定或随着用户滚动而调整大小的标题。相比于现有的 [SliverPersistentHeader](https://api.flutter.dev/flutter/widgets/SliverPersistentHeader-class.html)[SliverAppBar](http://sliverappbar/),这些新的组件提供了更简单的 API,可以更灵活地组合使用。

Cupertino 库的更新

此次更新提升了 [CupertinoActionSheet](https://api.flutter.dev/flutter/cupertino/CupertinoActionSheet-class.html) 的体验。现在按下按钮时会有触觉反馈,按钮的字体大小和粗细也和原生应用一致。

另外,官方还为 [CupertinoButton](https://api.flutter.dev/flutter/cupertino/CupertinoButton-class.html) 增加了新的焦点属性,您还可以自定义禁用状态下 [CupertinoTextField](https://api.flutter.dev/flutter/cupertino/CupertinoTextField-class.html) 的颜色。Cupertino 库还在不断改进,未来会有更多更新。

TreeView 组件

[two_dimensional_scrollables](https://pub.dev/packages/two_dimensional_scrollables) 包增加了 [TreeView](https://pub.dev/documentation/two_dimensional_scrollables/latest/two_dimensional_scrollables/TreeView-class.html) 组件和相关类,用于构建可以从两个方向滚动的树状组件。

同时,TreeSliver 也被添加到框架中,可以用于构建单向滚动的树状结构。TreeViewTreeSliver 的 API 一致,使它们之间的切换更加方便,适用于不同的使用场景。

CarouselView 组件

此次更新引入了 Material Design 轮播图 组件:CarouselViewCarouselView 提供了一种可以滚动到容器边缘的布局,项目在滚动时可以动态改变大小。

更多小部件功能

一些核心小部件逻辑从 Material 库迁移到 Widgets 库中,以便更广泛地使用。这些改进包括:

  • [Feedback](https://github.com/flutter/flutter/pull/148523) 小部件,可轻松访问设备的触觉和音频反馈。
  • [ToggleableStateMixin](https://github.com/flutter/flutter/pull/148272)[ToggleablePainter](https://github.com/flutter/flutter/pull/148272),用于构建切换类小部件(如复选框、开关、单选按钮)的基类。

AnimationStatus 的新功能

社区成员 @nate-thegrate 为 AnimationStatus 增加了新功能,添加了以下 getter 方法:

  • isDismissed
  • isCompleted
  • isRunning
  • isForwardOrCompleted

这些方法帮助开发者更方便地检查动画的状态。此外,AnimationController 还增加了一个 [toggle](https://api.flutter.dev/flutter/animation/AnimationController/toggle.html) 方法,用于切换动画的方向。

SelectionArea 的改进

Flutter 的 [SelectionArea](https://api.flutter.dev/flutter/material/SelectionArea-class.html) 现在支持更多与鼠标三击和触摸设备双击相关的手势,默认情况下,SelectionArea[SelectableRegion](https://api.flutter.dev/flutter/widgets/SelectableRegion-class.html) 小部件使用这些新手势。

三击操作可以选择整段文本,而双击操作可以选择单词,使文本选择变得更加简单。

引擎

Impeller

提升性能和效果

团队一直在努力提升 Impeller 的性能和保真度,尤其是即将取消 iOS 上的 Impeller 选择退出。例如,一系列改进大幅提高了文本渲染性能,特别是在滚动大量表情符号时,消除了卡顿现象。

通过解决一些问题,Impeller 现在在文本粗细、间距和字距调整上与旧版渲染器表现一致。

Android 预览

此次版本中,官方继续在 Android 平台预览 Impeller。由于 Android 14 的一个 bug,影响了 Impeller 对平台视图的支持,预览期被延长。官方希望开发者升级到最新版本并提供反馈,这对于 Impeller 在 Android 平台上的成功至关重要。

缩小图像的默认设置改进

在此版本中,图像的默认 FilterQualityFilterQuality.low 改为 FilterQuality.medium,以减少像素化效果并提高渲染速度。

Flutter GPU 预览

Flutter 引入了一项主要的渲染更新:Flutter GPU。这个低级图形 API 允许开发者使用 Dart 代码和 GLSL 着色器创建自定义渲染器,而不需要任何原生平台代码。

Flutter GPU 让应用程序能够直接渲染高级图形和 3D 场景,目前支持 iOS、macOS 和 Android 平台。未来,Flutter GPU 会逐渐增加更多功能,官方将提供更高层次的渲染库来简化这些高级功能的使用。

开发者可以通过切换到主渠道并添加 flutter_gpu 包来开始使用 Flutter GPU。如需详细了解,请查看Flutter GPU 博客文章。

Web

多视图嵌入

Flutter 网页应用现在可以利用多视图嵌入功能,让开发者同时将内容渲染到多个 HTML 元素中。这种灵活性特别适合需要多个独立视图的复杂网页应用。

要启用多视图模式,请在 flutter_bootstrap.js 文件中设置 multiViewEnabled: true,然后可以通过 JavaScript 动态添加或移除视图,Flutter 会相应地更新内容。

变现

视频广告变现支持

官方推出了新的 Interactive Media Ads (IMA) 插件,支持 Flutter 移动应用中的流视频广告变现。这个插件为 Flutter 应用提供了更多的广告收入机会,例如播放视频前先展示 15 秒的广告。

当前版本支持在 Android 和 iOS 平台上播放前贴片广告,未来将增加中贴片广告的支持。官方鼓励开发者开始在应用中尝试 IMA 插件。

iOS

Swift Package Manager 支持

Flutter 3.24 增加了对 Swift Package Manager 的初步支持,带来了一些好处:

  1. 可以访问 Swift 包生态系统。
  2. 简化 Flutter 的安装流程,未来将不再需要安装 Ruby 和 CocoaPods。

生态系统

Shared Preferences 插件更新

官方为 shared_preferences 插件增加了两个新 API:SharedPreferencesAsync 和 SharedPreferencesWithCache。它们提供了异步和缓存的偏好设置访问方式,使应用能够更好地管理偏好数据。

开发工具和 IDE

此次更新为 Flutter DevTools 工具套件带来了一些改进,例如 Rebuild Stats 功能可以帮助您追踪小部件的重建次数。另外,官方对 Network profilerFlutter Deep Links tool 进行了优化,以便为开发者提供更好的体验。

要了解 Flutter 3.24 的所有更新,请查看 DevTools 2.35.0、2.36.0 和 2.37.2 的发行说明。

重大更改和弃用

此次版本包含了一些重大更改,例如 Navigator 的 pages API 和 PopScope 中的泛型类型。查看重大更改页面 以获取完整的迁移指南。

结论

Flutter 的成功离不开社区的支持。要详细了解本次发布的内容,官方邀请您查看发布说明 和 变更日志。

Flutter 3.24 和 Dart 3.5 现已在稳定渠道发布,快来升级并尝试这些新功能吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始,如何构建一个完整的Java Web应用(全面指南!)

第一步:设置开发环境 1. 安装必要的软件 2. 创建项目结构 3. 添加Spring Boot依赖 4. 配置数据库连接 第二步:设计数据模型 1. 创建实体类 2. 创建Repository接口 第三步:创建服务层 1. 创建服务接口 2. 实现服务接口 第四步&…

Open WebUI | 自托管的类 ChatGPT 网站

Open WebUI 是一个扩展性强、功能丰富且用户友好的自托管 WebUI,支持 ChatGPT 网页端的大部分功能,支持各类模型服务,包括 Ollama 和 OpenAI 的 API。该项目在 GitHub 上已有 38k 星,非常受欢迎。 功能介绍 本篇介绍该项目的功能…

分布式 ID

背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。随着数据日渐增长,对数据分库分表后也需要有一个唯一ID来标识一条数据或消息,数据库的自增 ID 显然不能满足需求;此时一个能够生成全局唯一 ID 的系统是非常必…

Android中的Activity(案例+代码+效果图)

目录 1.Activity的生命周期 核心生命周期回调 1)onCreate() 2)onStart() 3)onResume() 4)onPause() 5)onStop() 6)onRestart() 7)onDestroy() 8)生命周期图示 10)注意事项…

Android实现App内直接预览本地PDF文件

在App内实现直接预览pdf文件,而不是通过调用第三方软件,如WPS office等打开pdf。 主要思路:通过PhotoView将pdf读取为图片流进行展示。 一、首先,获取对本地文件读取的权限 在AndrooidManifest.xml中声明权限,以及页…

神经网络整体架构

文章目录 1.输入层Input2.卷积层Conv3.激活函数层(一)Sigmoid 函数(二)Tanh 函数(三)修正线性单元ReLU(四)Leaky ReLU函数(带泄露的Relu)(五)参数化ReLU 4.池化层POOL5.全连接层FC6.输出层Output 用全连接神经网络处理大尺寸图像具有三个明显的缺点: ①将图像展开为…

gitlab-ci 集成 k3s 部署spring boot 应用

环境 一台ECS gitlab 16.10 一台ECS gitlab-runner docker方式 一台腾讯云服务器 k3s k3s version v1.30.5k3s1 (9b586704) go version go1.22.6 本地: idea 2024 准备开始 gitlab上创建"api"仓库,本地IDEA 创建spring boot web demo项目k8s-gitlab-demo. 确保能…

写端口-网络测试ping

最近一直在学习网络编程,今天把pyping 部分做一个总结。 Python pyping资料很少,官方例子有限,大神博客很少提及, 经过一番尝试后,总结以下几点用法以便大家以后使用。 from pythonping import ping def test(ip:str…

【计算机网络】计算机网络相关术语

文章目录 NAT概述NAT的基本概念NAT的工作原理1. **基本NAT(静态NAT)**2. **动态NAT**3. **NAPT(网络地址端口转换,也称为PAT)** 底层实现原理1. **数据包处理**2. **转换表**3. **超时机制** NAT的优点NAT的缺点总结 P…

跟踪用户状态,http协议无状态 Cookie HttpSession,Session和Cookie的关系

1.概念分析 跟踪用户状态指的是web应用能够分辨请求属于哪个用户,进而记录用户的状态,从而为用户提供连续的针对性的服务。比如有多个客户在同一个购物网站上购物,每一个用户都会有一个虚拟的购物车。当某个客户发送请求将商品添加到购物车时…

使用 Netperf 工具进行 TCP 和 UDP 时延测试

测试目的 通过使用 Netperf 工具评估 TCP 和 UDP 协议的时延性能,分析不同 Payload 大小对时延的影响,为网络性能优化提供数据支持。 测试环境 - **硬件**: - 测试服务器(运行 Netperf) - CPU: 至少四核 …

基于Vue3+Ts+Vite项目中grpc-Web的应用以及其中的坑

背景: 最近项目中有一个需求:在新项目中使用grpc进行前后端通信。我便基于此需求开始了新的研究。 首先我是想抄作业的,但是翻了很多相关grpc-web的文章,写的都不是很详细,再涉及到grpc-web服务的升级迭代&#xff0…

初学Qt之环境安装与 hello word

环境: Qt Creator 4.11.0 (Community) Qt 5.14.0 目录 1.Qt环境配置 1.1 下载Qt 5.14.0 1.2 注册Qt账号 1.3 安装Qt 1.4 配置环境变量 2.创建项目 2.1 创建一个项目 2.2 初始代码解析 2.3 可视化GUI ​编辑 2.4 hello word 2.4.1 可视化hello word …

线性回归-随机梯度法下降算法预测波士顿房价(附带数据集下载链接, 长期有效)

机器学习基本步骤: ​1.数据获取-导入外部数据集housing_price 数据获取: 听着高大上, 实际上就是把内部/外部数据集加载进来 2.数据基本处理-缺失值处理, 分割数据集, 数据基本处理:实际上就是对数据中缺失的数据和异常的数据进行处理, 然后进行数据集分割 3.特征工程-特…

Spring Boot知识管理系统:创新与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

公开课学习:软件测试面试3大难题

1.验证码机制的处理:自动化遇到验证码怎么办?怎么测试? 流程:先识别元素,再对元素进行操作。实际上,验证码无法用自动化技术操作解决,都是由开发给万能码,或者屏蔽验证码去解决!那如果不能屏…

数据结构——优先级队列(堆)

概念: 在操作数据的时候,操作的数据具有优先级,需要返回最高级别的优先级数据或者添加新对象时就需要用到优先级队列。 jdk1.8中的PrioriytQueue底层实现了堆这种数据结构实际上,堆其实就是在完全二叉树进行调整而来。 堆&#x…

C++STL--------vector

文章目录 一、vector常用接口介绍1、initializer_list2、接口有很多类似3、typeid(类型).name()4、find() 函数5、内置类型构造 二、vector()常用接口模拟实现 截图来源网站:https://legacy.cplusplus.com/reference/vector/vector/ 一、vector常用接口介绍 是一个…

哪种护眼大路灯孩子用着最好?公认最好的护眼大路灯

哪种护眼大路灯孩子用着最好?最近也有不少家长关注到了孩子视力健康的这个情况,很着急开始寻找各种能够减少孩子因为不良光线影响视力健康的方法,其中大路灯以良好的表现成为家长们的首选,但快速发展的市场中,却涌入了…

Golang 逃逸分析(Escape Analysis)理解与实践篇

Golang 逃逸分析(Escape Analysis)理解与实践篇 文章目录 1.逃逸分析2.相关知识(栈、堆、GC分析)3.逃逸分析综合-实践 demo 逃逸分析(Escape Analysis)是编译器在编译期进行的一项优化技术,是Gl…