宣布扑翼1.17

2020-05-07 02:23:27

包括金属支持,可实现更快的iOS性能、新材料组件、新网络跟踪工具等!

今天,我们很高兴地宣布Ffltter 1.17,这是我们2020年的第一个稳定版本。

今年对每个人来说都是充满挑战的一年。我们的目标是以大约每个季度的节奏发布稳定的版本;然而,这个版本花费的时间稍长一些,因为我们一直在为新的发布流程重新装备我们的基础设施。我们继续把质量放在首位,并相信新的版本模式将提高我们为稳定分支提供高质量补丁服务的能力。这个版本充满了修复,自从我们的1.12稳定版本以来,史无前例的关闭了6,339个问题。这一增长在很大程度上要归功于我们与Nevercode的合作伙伴关系,这使得我们在响应客户问题时提高了响应速度。今年到目前为止,我们已经关闭了比打开的更多的漏洞,导致净减少了大约800期。我们从231个贡献者中合并的3164个PR修复了其中的许多错误。这是一个巨大的数字,我们衷心感谢每个人在这个充满挑战的时期所付出的辛勤工作和持续的贡献。

如果您对我们在此版本中合并的PR的完整列表感兴趣,您可以在fltter.dev站点上查看。除了质量改进之外,我们还设法将一些新功能偷偷添加到此版本中,包括iOS上的金属支持、新材料组件、新网络跟踪工具等等!此版本还包括DART 2.8,您可以在DART博客上阅读有关DART 2.8的更多信息。

此版本的一个主要焦点是继续进行性能和内存改进的总体工作。只需将您的应用程序升级到此版本,您的用户就可以看到更快的动画、更小的应用程序和更低的内存使用率。在此版本中,您将看到默认导航情况(不透明路线,不透明)的加速比为20%-37%。根据硬件的不同,你还会看到简单的iOS动画的中央处理器/图形处理器的使用率降低了40%(详见公关14104和公关13976)。

此版本还提供了相当大的应用程序大小改进,这是由于几个修复程序加在一起产生了很大的结果。例如,2019年底Android版的颤动画廊样机是9.6MB,现在是81MB,降幅为18.5%。

在内存使用方面,此版本在快速滚动大图像方面减少了70%的内存,这也可以提高性能,具体取决于设备的内存大小。

苹果在iOS上对Metal的支持提供了对底层GPU的近乎直接的访问,并且是苹果推荐的图形API。在完全支持Metal的iOS设备上,Ffltter现在默认情况下使用它,从而使Ffltter应用程序在大多数时间运行得更快,使渲染速度平均提高约50%(取决于您的工作负荷)。

对于不完全支持Metal的设备(A7处理器之前的设备或运行10之前的iOS版本的设备),Ffltter像过去一样使用OpenGL,为较旧的设备提供本地渲染速度。有关更多详细信息,请查看颤动维基上iOS上的金属常见问题。

我们根据来自内部和外部客户的反馈,不断发展和改进在FIFTITE中实施的材料设计系统。在此版本中,我们添加了NavigationRail,这是一个提供响应式应用导航模型的新小部件。它是由Google Material Design团队设计和实现的。NavigationRail对于可以在移动和桌面外形之间切换的应用程序非常有用,因为随着应用程序屏幕尺寸的增加,更换为BottomNavigator非常容易。

要查看NavigationRail的运行情况,请查看web_dashboard示例或在Dartpad上尝试。

除了新的小部件外,此版本还包括对Material DatePicker和文本选择溢出小部件的更新。

此DatePicker版本包括与更新的材料指南相匹配的新视觉效果,以及新的文本输入模式。您可以在材料日期选择器重新设计规范中阅读详细信息。

文本选择菜单现在提高了Android和iOS的保真度,因为按钮的长度超过了不会溢出的显示长度。这在菜单项单词可能较长的区域设置中尤其明显。

在与Ffltter 1.17相同的时间范围内,但在带外交付,我们还提供了新的动画包,该包提供了实现新材质运动规范的预构建动画。

在Implementing Motion博客文章中,Material Design团队定义了描述组件和全屏视图之间动画的四种过渡模式:容器变换、共享轴、淡入淡出和淡入淡出。虽然这些动画总是可以在颤动中实现,但是Animations包使它们的实现变得非常容易。将它们放入您的应用程序中,立即取悦您的用户!

在此版本中,颤振团队在不破坏现有颤动应用程序的情况下完成了2018材质设计规范的类型比例部分的实施。PR 22330于2018年10月增加了对新配置(但不包括新名称)的选择加入支持。现有的文本样式名称没有更改,因为这样做是一个突破性的API更改,可能会影响大多数应用程序。此版本更新了TextTheme API以匹配当前的材料规范,但保留了旧名称,这样您的代码就不会中断。但是,旧名称已被弃用,因此您将收到警告,鼓励您采用新名称。

下表汇总了2018材质TextStyles的名称和配置。

请注意,材质设计规范中称为body1和body2的文字样式在Ffltter TextTheme API中称为bodyText1和bodyText2。类似地,规范中称为H1-H6的TextStyles在TextTheme API中称为headline1-headline6。

文本和字体是齐头并进的,所以如果您对新的材质文本比例实现感到兴奋,那么您可能也会对Ffltter v1.0版本的新Google字体感到兴奋。

Google Fonts允许开发者在他们的应用程序中轻松地尝试和使用fonts.google.com中的任何字体。当应用程序准备好发布时,开发人员然后决定用户是通过从API下载字体来接收字体,还是将其预先与应用程序包捆绑在一起。

最后,继续关注的一个重要领域是易访问性,因为我们认为向尽可能广泛的受众提供Ffltter应用程序是当务之急。在这个版本中,我们做了全面的工作,包括修复滚动、文本字段和其他输入小部件的可访问性。您将在GitHub上看到本版本中已解决的可访问性问题的完整列表。我们鼓励您测试您自己的应用程序的可访问性,并使用一些推荐的最佳实践更新了此版本中的文档。

在国际化方面,我们一直在研究一些影响三星键盘输入法的问题,这些问题会影响各种东亚语言的文本输入。我们很高兴地报告,我们已经完成了这项工作,特别是韩国的开发人员应该会在这个版本中找到很多值得庆祝的地方。

此版本使我们非常接近用新的颤动版本替换当前版本的DART DevTools。如果你想试一试,启动DevTools并点击DevTools右上角的“烧杯”图标。

当您使用使用Ffltter实现的DART DevTools的预发行版时,您可能会注意到各种改进,但最大的改进是新的网络选项卡。

如果您在DART DevTools的预发行版中看不到网络选项卡(例如,如果您从命令行运行它),则可以使用以下命令手动更新它:

一旦您按下记录按钮,网络选项卡就会显示颤动应用程序的网络流量。此外,如果您希望从启动应用程序时立即开始捕获网络流量,可以在main()方法中包含以下代码行:

除了更新的DART DevTools,此版本还增加了对实验性“快速启动”选项的支持,该选项允许您在面向Android的情况下以高达70%的速度启动颤动应用程序调试。您可以通过Ffltter Run访问此选项--fast-start-d<;您的Android设备>;。此选项将安装仅依赖于您的插件代码(不包括任何DART代码或资产)的通用Android应用程序。这允许重复的颤振运行命令更快地启动,因为对DART代码或资源的更改不需要重新构建APK。该选项将您的应用程序捆绑到一个通用的Android“包装器”中,该“包装器”实际上并不会安装在您的设备上,这与我们通常的启动选项不同。此外,在某些情况下,它不会工作,例如,当您使用访问后台执行的插件时。另一方面,如果你的Android调试启动时间让你感到沮丧,那就试一试吧。

如果你的目标是Android,另一个需要注意的变化是,现在当你创建一个新的颤动项目时,AndroidX是唯一的选择。AndroidX库提供称为Android Jetpack的高级Android功能。在上一个版本中,我们弃用了最初的Android Support Library,转而使用AndroidX作为所有新项目的默认版本。在此版本中,创建颤动的--androidx标志现在是唯一可用的选项。虽然不使用AndroidX的现有应用程序可以继续快速编译,但现在是迁移到新库的大好时机。

如果您是Android Studio或IntelliJ用户,您会发现热重新加载功能更具弹性。在此更改之前,如果您有任何分析错误,热重新加载将不会重新加载您的代码。如果分析错误不会影响您当前运行的代码(如单元测试中的代码),这可能会非常令人沮丧。有了这一更改,分析错误不足以阻止热重新加载工作,这取决于来自VM的编译器错误。

如果你想早点访问Android Studio或IntelliJ的Ffltter插件中的这些变化,我们现在有一个IntelliJ插件的开发频道,你可以选择加入,以获得更快的更新节奏。Dev Channel的目标是在我们更广泛地使用新的IDE集成功能之前,收集Ffltter开发人员对这些功能的反馈。如果您喜欢冒险,并且想要为颤动工具团队提供早期反馈,请立即注册!

对于Visual Studio代码用户,我们建议使用新的DART:LIST过时的包命令,该命令运行新的“pub过时的”命令。

最后但并非最不重要的一点是,如果您发现自己遇到了颤动崩溃,工具会提示您将错误归档。

团队密切关注这些错误报告的严重性和频率,因此请在出现提示时记录它们。

当然,颤动的存在是为了提供美好的应用体验。数字代理公司做了令人惊叹的事情的一个例子是Superformance ula,他最近与米高梅度假村(MGM Resorts)合作,对他们的移动应用程序进行了重大更新,完全重建了它。他们报告说,“在我们的核心产品中加入Ffltter,释放了更多的速度和灵活性,这为我们的客户和他们的用户带来了真正的、可衡量的价值。”

SuPerformula与米高梅度假村设计团队合作,为所有主要的网络、移动和信息亭体验创建了一种新的米高梅设计语言。有了一个更小的团队和全新的Ffltter代码库,他们能够比以前更快地重建应用程序并将其发货到两个应用程序商店,导致米高梅的预订转化率增加了9%。

一如既往,我们试图最大限度地减少每次发布Ffltter时的突破性更改数量,同时仍然平衡我们的能力,以确保Ffltter提供直观、灵活的API,可以在新平台上支持新习惯用法。在去年的一次用户调查中,您告诉我们您对改进框架的经过仔细考虑的破坏性更改持容忍态度。因此,我们正在继续温和地发展API。这些是此版本中的突破性更改。

随着我们的移动支持不断成熟,同时我们让网络更接近产品质量,Ffltter带来了解决我们这个行业几十年来一直在挣扎的问题的希望:如何从单一的源代码基础上跨多个平台构建伟大的应用程序?有了颤动提供的所有力量和能力,我们认为我们正走在一条很好的道路上来回答这个问题。你打算建造什么?