Google推出智能代码完成的Dart 2.5 支持iOS 13

谷歌今天发布了Dart 2.5和Flutter 1.9。Dart 2.5为调用C代码和智能代码完成提供了更强大的支持,它利用机器学习帮助开发人员完成代码或识别他们应该使用的API。Flutter 1.9允许开发人员使用相同的代码库构建移动,桌面和Web应用程序。新版本还支持iOS 13和macOS Catalina,并包含用于切换按钮和过滤器的新材质小部件。

Dart是Google开发的一种编程语言,用于构建移动,桌面,后端和Web应用程序。2011年10月推出的面向对象,类定义的垃圾收集语言使用C语言语法,可以选择性地转换为JavaScript。

Flutter于2017年5月首次在Google的I / O开发者大会上宣布,并于2018年12月达到1.0版。想要与Facebook的React Native等框架竞争,该库旨在将原生移动的性能和平台集成与快速开发相结合和便携式UI工具包的多平台范围。Flutter应用程序是使用Google的Dart编程语言构建的。

飞镖2.5

具有讽刺意味的是,Dart 2.5稳定发布的亮点是两个技术预览。第一个是dart:ffi外部函数接口,用于直接从Dart调用C代码。第二个是由机器学习驱动的代码完成。

调用C代码

直接从Dart调用C的支持目前仅限于使用本机扩展深入集成到Dart VM。Google的目标是提供一种新的机制,该机制具有“出色的性能,易于接近,并且可以在许多受支持的Dart平台和编译器上运行。”Dart-C interop支持两种主要方案:

在主机操作系统上调用基于C的系统API。

调用基于C的库,可以是单个操作系统,也可以是跨平台。

dart:ffi库今天正在预览中发布。在Flutter主通道或Dart dev通道上尝试。请注意,Google仍然存在一些限制,并希望在最终版本发布之前进行重大更改。

智能代码完成

随着API的增长,类型化编程语言中可能的完成列表变得太长,无法按字母顺序浏览。与微软一样,谷歌正在探索利用机器学习来帮助开发人员在打字时完成代码完成。

该团队使用TensorFlow Lite通过分析大量的GitHub开源Dart代码来训练基于给定上下文的可能成员事件的模型。然后,此模型用于预测开发人员正在键入的可能的下一个符号(GitHub repo)。

在新的预览可直接作为达特分析器的一部分。这意味着所有支持Dart的编辑器都可以使用代码完成体验,包括Android Studio,IntelliJ和Visual Studio Code。预览此功能时,您将需要使用Flutter dev通道或Dart dev通道。

常量表达式等等

最后,Dart 2.5支持更多定义常量表达式的方法,包括使用强制转换的能力以及Dart 2.3中提供的新控制流和集合扩展功能。虽然Dart长期以来一直支持创建const变量和值,但直到现在,常量表达式仍然有限。

至于下一个Dart版本,Google正在研究扩展方法,默认情况下强制引用不可为空,以及改进的并发支持。由于最近的所有语言变化,Google还投资于现有代码的丰富迁移工具。

颤动1.9

Flutter 1.9增加了对macOS Catalina和iOS 13的支持,改进了工具,新的Material小部件和新的Dart语言功能。总体而言,谷歌指出Flutter 1.9是其最大的更新,“来自100多个贡献者的超过1,500个PR。”

Flutter 1.9还增加了对24种语言的支持:南非荷兰语,阿尔巴尼亚语,阿姆哈拉语,阿萨姆语,阿塞拜疆语,巴斯克语,白俄罗斯语,孟加拉语,缅甸语,古吉拉特语,冰岛语,格鲁吉亚语,卡纳达语,吉尔吉斯语,老挝语,马其顿语,马拉雅拉姆语,尼泊尔语,奥里亚语,旁遮普语,僧伽罗语,泰卢固语,乌兹别克语和祖鲁语。

扑动网络

谷歌在其I / O 2019开发者大会上于5月发布了Flutter网络的第一次技术预览。现在,该公司已将Flutter Web存储库合并到主要的Flutter存储库中。这意味着开发人员可以使用相同的代码库为移动,桌面和Web编写代码。

因此,现在不推荐使用flutter_web存储库。如果您拥有主要或开发者频道的最新Flutter版本,则可以通过运行使用最新的Flutter实验版本来定位Webflutter run -d chrome。

当您创建项目时,Flutter现在通过最小的web / index.html文件创建一个Web运行器,该文件引导您的Web编译的Flutter代码。该文件允许您使用Flutter CLI工具或IDE插件在Web上编辑和运行Flutter应用程序。然而,谷歌警告说,Flutter对网络输出的支持仍处于早期阶段。

macOS Catalina,iOS 13和Material

Apple目前正在发布各种操作系统的最新版本,包括iOS 13和macOS Catalina。Google确保Flutter与Xcode 11协同工作,在整个工具链中采用新的Xcode构建系统和64位支持,并简化了平台依赖性。Flutter 1.9还包括iOS 13可拖动工具栏的实现,包括长按和右拖,并支持振动反馈。iOS黑暗模式的工作已经开始,但还没有完成。

在最新的开发版本中,您现在可以启用对Bitcode的实验性支持,Bitcode是Apple独立于平台的编译程序的中间表示。以Bitcode的形式提交您的应用程序允许Apple在未来重新提交时优化您的二进制文件。这也意味着有一天Flutter可能会支持像watchOS和tvOS这样需要Bitcode提交应用程序的平台。

除了Apple之外,Flutter 1.9还包括几个使用GoogleMaterial Design的新小部件。该的ToggleButtons部件结合图标和文本部件形成一组按钮。该ColorFilteredwidget允许你重新着色子控件的一棵树,就像你可以重新着色使用几种不同的算法之一的图像。

飞镖2.5

我们已经完成了Dart 2.5。对于iOS和Android,新项目分别默认为Swift而不是Objective-C和Kotlin而不是Java。该团队还使Flutter的错误消息更具可读性,简洁性和可操作性。

Swift作为默认语言删除了将许多包添加到使用默认选项创建的应用程序的手动工作。Swift 5是ABI稳定的,并且Swift动态库不再需要包含在iOS 12.2或更高版本的分发包中。与先前版本相比,这应该会减小Swift应用程序的大小。

由于Kotlin现在是Android Studio中新项目的默认语言,因此它现在也是Flutter的Flutter CLI工具和IntelliJ / Android Studio和Visual Studio Code插件的默认语言。如果您愿意,可以切换回Objective-C或Java。