Dart 2.14语言和Flutter 2.5框架可用

Google 发布了 Dart 2.14 编程语言,该语言继续开发彻底重新设计的 Dart 2 分支,该分支与原始版本的 Dart 语言的不同之处在于使用了强静态类型(类型可以自动推断,因此指定类型不是必需的,但不再使用动态类型,并且初始计算将类型分配给变量,随后应用严格的类型检查)。

Dart语言的特点:

  • 熟悉且易于学习的语法,对于 JavaScript、C 和 Java 程序员来说很自然。
  • 确保所有现代 Web 浏览器和各种类型的环境(从便携式设备到功能强大的服务器)的快速启动和高性能。
  • 能够定义允许封装和重用现有方法和数据的类和接口。
  • 指定类型可以更轻松地调试和识别错误,使代码更清晰、更具可读性,并简化第三方开发人员的修改和分析。
  • 支持的类型包括:各种类型的哈希、数组和列表、队列、数字和字符串类型、用于确定日期和时间的类型、正则表达式(RegExp)。 可以创建您自己的类型。
  • 为了组织并行执行,建议使用具有isolate属性的类,其代码完全在单独的内存区域的隔离空间中执行,通过发送消息与主进程交互。
  • 支持使用可简化大型 Web 项目的支持和调试的库。 函数的第三方实现可以以共享库的形式包含在内。 应用程序可以分为多个部分,并将每个部分的开发委托给单独的程序员团队。
  • 一组支持 Dart 语言开发的现成工具,包括动态开发和调试工具的实现,以及动态代码修正(“编辑并继续”)。
  • 为了简化 Dart 语言的开发,它附带了一个 SDK、一个包管理器 pub、一个静态代码分析器 dart_analyzer、一组库、一个集成开发环境 DartPad 以及支持 Dart 的 IntelliJ IDEA、WebStorm、Emacs、Sublime Text 插件2 和维姆。
  • 带有库和实用程序的其他软件包通过 pub 存储库分发,该存储库拥有超过 20 个软件包。

Dart 2.14 版本的主要变化:

  • 添加了新的三重移位运算符 (>>>),与“>>”运算符不同,它执行的不是算术运算,而是逻辑移位,无需考虑符号位(执行移位时不会分为正数和负数)。
  • 删除了对类型参数的限制,该限制阻止泛型函数类型用作类型参数。 例如,现在您可以指定:late List (T)>id 函数; var 回调 = [ (T值) => 值]; 后期 S 函数(T)>(S) f;
  • 允许使用注释中的类型指定参数,例如@Deprecated。 例如,您现在可以指定:@TypeHelper (42、《意义》)
  • 静态方法 hash、hashAll 和 hashAllUnordered 已添加到 Object 类的标准库(核心)中。 DateTime 类改进了在不能被一小时整除的夏令时和冬令时之间转换时钟时对本地时间的处理(例如,在澳大利亚使用 30 分钟的偏移量)。 ffi 包添加了对 arena 内存分配机制的支持,该机制会自动释放资源。 ffigen 包添加了从 C 语言生成 Dart 类型的 typedef 定义的功能。
  • pub.dev 存储库中 250 个最受欢迎的软件包以及前 94 个软件包中的 1000% 已切换为使用“空安全”模式,这将避免因尝试使用值未定义并设置为“空”的变量而导致崩溃” “ 该模式意味着变量不能有 null 值,除非显式地为它们分配了 null 值。 该模式严格遵守变量类型,这允许编译器应用额外的优化。 在编译时检查类型合规性,例如,如果尝试将值“Null”分配给类型不暗示未定义状态的变量(例如“int”),则会显示错误。
  • 提出了代码分析器(linter)的统一规则集,为检查是否符合 Dart 和 Flutter 框架的代码风格指南提供了同步支持。 由于历史原因,Flutter 和 Dart 的编码规则是不同的,此外,Dart 使用了两套规则——来自 Google 的迂腐规则和来自 Dart 开发者社区的规则。 Dart 2.14 引入了一套新的 linter 通用规则,决定在新的 Dart 项目和 Flutter SDK 中默认使用该规则。 该集包括核心规则(lints/core.yaml 包)、推荐的附加规则(lints/recommished.yaml)和特定于 Flutter 的建议(flutter_lints/flutter.yaml)。 建议使用迂腐规则的用户根据 Dart 文档的建议改用新的编码风格。
  • 在格式化程序中,对级联代码块的格式化进行了优化,可以显着提高格式化性能,并避免对表达式元素所有权的模糊解释。 例如,在表达式“var result = errorState ?”中调用“..doIt” foo : bad..doIt()” 不关心“bad”块的条件部分,而是整个表达式,因此在格式化时现在将其分开: var result = errorState ? foo : 坏..doIt();
  • SDK 中添加了对 Apple M1 (Silicon) 处理器的支持,这意味着能够在具有 Apple Silicon 处理器的系统上运行 Dart VM、实用程序和 SDK 组件,并支持为这些芯片编译可执行文件。
  • “dart pub”命令添加了对新服务文件“.pubignore”的支持,该文件允许您定义将包发布到 pub.dev 存储库时将跳过的文件列表。 这些设置不会干扰“.gitignore”忽略列表(在某些情况下,pub.dev 可能希望避免传输 Git 中所需的文件,例如开发期间使用的内部脚本)。
  • 已经完成了提高“dart test”命令性能的工作,如果版本号未更改,该命令现在不需要在更改 pubspec 后重新编译测试。
  • 已停止支持 ECMAScript 5 兼容模式下的编译(此更改将导致失去与 IE11 浏览器的兼容性)。
  • 各个实用程序 stagehand、dartfmt 和 dart2native 已被宣布过时,取而代之的是通过 dart 实用程序调用的内置命令。
  • VM 本机扩展机制已被弃用。 要从 Dart 代码调用本机代码,建议使用新的 Dart FFI(外部函数接口)。

同时,发布了用户界面框架 Flutter 2.5 的重要版本,该框架被认为是 React Native 的替代方案,允许基于一个代码库发布适用于 iOS、Android、Windows、macOS 和 Linux 的应用程序平台,以及创建在浏览器中运行的应用程序。 Google 开发的 Fuchsia 微内核操作系统的定制 shell 是在 Flutter 的基础上构建的。

Flutter代码的主要部分是用Dart语言实现的,执行应用程序的运行时引擎是用C++编写的。 开发应用时,除了使用Flutter原生的Dart语言之外,还可以使用DartForeignFunction接口来调用C/C++代码。 通过将应用程序编译为目标平台的本机代码,可以实现高执行性能。 在这种情况下,程序不需要在每次更改后重新编译 - Dart 提供了热重载模式,允许您对正在运行的应用程序进行更改并立即评估结果。

Flutter 2.5 的主要变化:

  • 进行了重大的性能优化。 在 iOS 和 macOS 平台上,已经实现了 Metal 图形 API 着色器的预编译。 提高了处理异步事件的效率。 解决了垃圾收集器从未使用的图像中回收内存时出现的延迟问题(例如,在播放 20 秒的动画 GIF 期间,垃圾收集操作的数量从 400 次减少到 4 次)。在 Dart 和 Objective 之间传递消息时出现延迟 - C/Swift 减少到 50% (iOS) 或 Java/Kotlin (Android) 为基于 Apple Silicon 芯片的系统添加了本机构建支持。
    Dart 2.14语言和Flutter 2.5框架可用
  • 对于Android平台,已经建立了对以全屏模式运行应用程序的支持。 作为下一代材料设计选项的“Material You”设计理念的实施仍在继续。 添加了新的状态MaterialState.scrolledUnder,实现了调整大小时滚动条的动态显示,并提出了用于显示通知横幅的新界面。
  • 相机插件的功能得到了显着扩展,添加了用于控制自动对焦、曝光、闪光、变焦、降噪和分辨率的工具。
  • 开发人员工具 (DevTools) 已得到改进,包括更新的小部件检查模式,以及用于识别渲染延迟和跟踪着色器编译的工具。
    Dart 2.14语言和Flutter 2.5框架可用
  • 改进了 Visual Studio Code 和 IntelliJ/Android Studio 的插件。

来源: opennet.ru

添加评论