在过去的24个月里,我们花了17.193,00小时使用Flutter完成了10个商业应用,本文分享了我们的感悟。阅读本文后,您将了解到:为什么选择Flutter?Flutter对预算和稳定性有什么影响?Flutter准备好用于企业应用程序了吗?Flutter与Xamarin相比如何?Flutter适合哪些项目?从2018年7月我们开始在LeanCode上开发第一个Flutter商业应用程序到现在已经两年了,当我第一次了解Flutter时,尽管它很有前途,但我仍然被困住了。持怀疑态度,主要是因为我们最近对Xamarin的投资有负面经验。由于我们的团队一直在寻求在我们的项目中使用一些令人兴奋的新技术,我们希望它能够证明它可以为我们的客户带来真正的价值。这是一个处理畜群管理的农业项目,一个非常有趣和典型的项目,管理员使用系统来计算对谷仓的需求,我们的团队认为这是一个用户体验的观点。一个伟大的洞察力。在两天内,他们自豪地展示了概念验证,证明制作动画并为您提供出色、流畅的体验是多么容易。最终,这变成了完整的动画,您可以在这里看到:有了这种喜悦,我相信Flutter值得尝试。最初,我们并没有100%致力于Flutter,而是与ReactNative项目并行。我对在没有Flutter团队官方支持的情况下编写第一个GoogleMaps实现持悲观态度。您可以在https://leancode.pl/case-studies/kezia-app上阅读更多关于在Flutter中编写您的第一个商业应用程序的经验以及相关的困难。最终,我们交付了一个相对简单的应用程序,浏览量不到40次,Flutter开发时间不到500小时。自从我们发布了第一个应用程序并收集了客户的5星评价后,我们认为我们应该开始更积极地向客户推荐Flutter。从2019年5月开始,我们决定将Flutter作为移动技术的首选。同时,我们将停止在其他不同框架上开发应用程序。从那时起,我们已经交付了10多个Flutter移动产品,并提供了数十个MVP/PoC。现在,是时候下结论了。Flutter更快我们没有在这里讨论理论方法(看这里https://blog.codemagic.io/flutter-vs-ios-android-reactnative-xamarin/),尽管这也很有趣。后来我们基于Xamarin和ReactJS重写了App,对比两者,在后端使用相同API的情况下,我们比Xamarin(667hvs987h),使用ReactJS(486hvs704h)减少了33%的时间),所需时间减少31%。停下来想想这些数字。这些数据回答了如何更快、更便宜地构建移动应用程序(使用Flutter)。随着经济不景气,在预算范围内按时交付产品变得越来越重要。这也意味着对于相同的预算,您可以多交付50%的订单。想象一下,您是负责开发团队优先事项的产品负责人,并且能够将预算壁垒进一步提高50%。这将大大提高团队的创造力和他们交付的工作质量。有关GastroJob案例的详细分析,请查看我们在Flutter欧洲会议上的演示文稿,或在https://leancode.pl/case-studies/gastrojob上查看我们的案例研究。平均90%的代码在iOS和Android之间共享。我们90%的代码不会在两个原生平台上都编写两次。与本机应用程序开发相比,节省了90%的时间,并且由于一致性和团队围绕一个目标而不是分成两个本地流而团结起来,释放了大量的创造力。除了共享业务逻辑和用户体验,我们还可以使用大量现成的库,带来更多好处。首先,他们可以通过为应用程序中使用的许多不同事物(例如与服务器(HTTP客户端)通信、推送通知、安全存储、数据库、动画等)提供通用逻辑来加快开发过程。其次,它更容易与许多流行的服务集成,例如Firebase、地图、支付、社交登录、分析、崩溃报告服务等。因此,在编写特定于平台的自定义代码时,您只需要编写两次代码(一次用于iOS,一次用于Android)。然而,即便如此,Dart和本机代码之间的桥接也相当简单,如本文后面所述。更重要的是,如果将质量考虑在内,节省的费用会更多,因此从长远来看,该应用程序的维护成本也会更低。事实上,我们查看了所有使用Xamarin、ReactNative和Flutter构建的项目的错误修复时间,而Flutter通常需要8-10%的错误修复时间。而ReactNative需要7–14%而Xamarin需要11–23%。与UX/UI的协作从未如此好在Flutter项目中,UX/UI设计师和开发人员之间需要协作。可能是因为他们不需要进行这种繁琐的本地化改编,从而释放了他们的创造力。然而,从ReactNative团队的经验来看,同样可以预料,事实并非如此。当我们更深入地挖掘时,我们发现Flutter为可以编写漂亮界面的开发人员带来了纯粹的快乐,而在以前,这会是一种额外的负担,会减慢速度。因此,他们更愿意合作,并且我们已经看到结对编程会话开始于设计师和开发人员携手进行现场实验。经过几次这样的交互,得益于强大的主题引擎,该团队能够为应用程序提供自适应设计语言,不仅在Figma或Adob??eXD中看起来很棒,而且还提供最佳的用户体验和连贯感。正确的设计顺序。如何在项目的整个生命周期中保持这种一致性也很有趣。以前,当UX/UI设计师在演示会议上审查产品时,他们在项目结束时收到大部分评论,在亲身体验后改变想法或简化事情。Flutter的独特之处在于,到项目结束时,设计师的参与完全消失了,因为他们在试错设计周期的早期就开始工作了。这也意味着花在后续冲刺优化上的时间更少,这种持续的协作反映在下一个版本的稳定Scrum速度上。动画是如此简单且经济实惠在Flutter中实现静态视图不仅简单,而且在动画方面开辟了许多新机会。这将这种UX-DEV合作提升到了新的高度,带来了前所未有的惊人转变。到目前为止,这只是大型预算项目的典型情况。今天,感谢Flutter,所有开发人员都可以使用它。发生这种情况是因为Flutter可以直接在画布上渲染并完全控制图形,这使我们能够在所有平台上创建像素完美的图像,而无需额外的条件格式。例如,当使用ReactNative绘图时,您的视图基于可以更改新控件外观的默认视图,因此构建了一个依赖于平台的臭代码,并且直接与共享代码不应进入部署平台的方法相矛盾。Flutter应用程序更轻在面对PWA业务选择时,PWA证明了在手机上添加快捷方式以像应用程序一样保存网站是多么容易。让我们把用户体验放在一边,只考虑下载应用程序的负担。是的,这两种情况都不容易。根据SimiCart博客,最好的PWA网站要求用户在加载时从4.9MB增加到11.6MB。这远低于我们25MB的Xamarin应用程序平均大小,甚至低于32MB的ReactNative应用程序平均大小,但非常接近Flutter的平均11MB,所有Flutter应用程序的大小都在9-14MB之间(请注意,尽管这些数字突出模式,它们不能直接比较)。您必须承认,对于本机应用程序体验、流畅的外观、快速的反应以及本机应用程序的所有典型服务(如推送通知)而言,这(11MB)是相当低的。这意味着没有障碍。用户下载应用程序并开始尽可能高效地使用所有插件和集成。这也意味着应用程序的性能更高,因为它们可以使用更小的代码执行类似的任务。与其他跨平台框架相比,这种性能提升直接转化为毫秒,让您在更酷的应用程序、动画、CPU和内存使用方面获得更快的体验(事实上,在Flutter中您可以更好地冷启动应用程序案例,甚至与Swift/Kotlin相比本机应用程序)。需要时可以访问本机代码。Flutter的美妙之处在于,移动团队更愿意使用原生代码并编写一些Kotlin/Swift包,因为他们可以完全控制原生实现,而Xamarin就是这种情况,最终代码是在一个孤立的黑盒子中生成的。本机代码的桥接也更健壮,因为它们是完全透明的,因此对从本机环境迁移过来的开发人员更友好。由于这种方法,可以轻松实现特定功能,例如本地支付提供商或一些复杂的库。更重要的是,即使是需要生物识别算法进行面部识别或指纹检查的高级功能也可以在Flutter上顺利运行,正如INGBusiness在Flutter中开发的银行应用程序所展示的那样,该应用程序由JakubBiliński在FlutterWarsawMeetup上展示。Flutter中的概念非常简单当我们需要构建概念验证来检查最危险的假设测试时,与本机代码的集成会带来额外的好处。这意味着我们可以在客户决定签署整个项目的合同之前构建最小的应用程序来回答最关键的业务或技术问题。在这一点上,我们不能高估Flutter的能力。每次我们都把这样的计划定为两天的开发,想在这么短的时间内能实现什么。到目前为止,我们正在试验各种PoC,包括支持AR的图像检测系统(下图),通过白板绘图绘制高级动画。构建一个快速的PoC不仅可以让我们展示开发速度,还可以帮助我们为最终项目提供更准确的估算。开发人员很高兴,从建立内部团队的角度来看,Flutter被证明是一个不错的选择。最初,Flutter开发者很少,因为没有专业经验。然而,与开发人员具有C#背景的Xamarin相比,情况有所不同,在Flutter的情况下,所有候选人都是从原生(主要是Android)背景转移的移动开发人员。随着Flutter变得越来越流行,并且由于活跃的社区组织以及定期的聚会和网络研讨会,可用候选人的数量呈指数级增长,今天有大量专业人士愿意在Flutter项目中寻找工作经过多年的本地应用程序开发,我们改变了我们的想法。得益于文档完善的Flutter代码和社区贡献的其他库的可用性,进行此类传输非常容易。因此,一些以前拥有独立移动团队的公司正在投资让他们围绕Flutter。在LeanCode,我们甚至组织了FlutterBootcamps,这是一个为期三天的湖边培训项目,旨在提供实践经验,并选择最佳候选人进行为期两个月的强化学习计划,在那里他们学习Flutter并做一些非商业的项目。我们惊讶地发现,经过9周的培训后,开发人员已准备好与从小就使用Flutter编写代码的同事并肩工作。如此短的学习周期证明,从企业主的角度来看,选择从原生应用转向Flutter并不是一场革命,而是内部团队可以发挥重要作用的演进。就您的技术堆栈做出正确的决定会对您的业务和个人职业产生持久影响。然而,很少有选项像这样简单。Flutter已经成为一股不可阻挡的运动,一股不可忽视的力量,它仍在发展壮大,并扩展到具有极高质量标准的非常保守的行业,如银行或保险(如NuBank、ING和AXA等)。如果您认为这种情况甚至发生在生产阶段的FlutterforWeb或FlutterforDesktop发布之前,这表明Flutterformobile具有足够的价值在这个非常先进的市场中竞争。无论您身处哪个行业,尝鲜时代已经结束,我们很快就会见证越来越多的老牌玩家进入Flutter生态。我希望这将使我们能够在明年的总结中分享从这些实现中吸取的经验教训,因为我们已经在Flutter中制作了另外10个出色的应用程序。
