共计 4973 个字符,预计需要花费 13 分钟才能阅读完成。
作者:Łukasz Kosman 和 Jakub Wojtczak
原文:https://medium.com/swlh/lessons-learned-after-making-the-first-10-commercial-apps-in-flutter-f420808048cd
在过来的 24 个月中,咱们破费 17.193,00 个小时应用 Flutter 实现了 10 个商业应用程序,本文将分享咱们的见解。
浏览本文后,您将学习到:
- 抉择 Flutter 的起因是什么?Flutter 对估算和稳定性有什么影响?
- Flutter 筹备好用于企业应用程序了吗?
- 与 Xamarin 相比,Flutter 的体现如何?
- Flutter 适宜哪些项目?
自 2018 年 7 月在 LeanCode 上开始在 Flutter 上开发咱们的第一个商业应用程序以来,到当初曾经有两年了,当我第一次理解 Flutter 时,只管它很有前景,但我依然持狐疑态度,次要是因为咱们最近对 Xamarin 的投资给咱们带来了负面体验。因为咱们的团队始终心愿在我的项目中应用一些激动人心的新技术,因而咱们心愿它可能证实它能给客户带来真正的价值。
这是一个农业我的项目,与牧群治理打交道,这是一个十分乏味而且典型的我的项目,管理员应用该零碎来计算对谷仓的需要,而咱们的团队认为,从 UX 的角度来看,这是一个很好的见解。
在两天内,他们骄傲地展现了概念验证计划,证实了制作动画非常容易,能够为您带来杰出而晦涩的体验。最终,这已演变为残缺比例的动画,您能够在此处看到:
有了这个喜悦,我确信 Flutter 值得尝试。
最后,咱们没有将本人 100%投入 Flutter,而是与 React Native 我的项目并行进行。在没有 Flutter 团队官网反对的状况下编写第一个 Google Maps 实现,对此我感到乐观。您能够在此处理解无关在 Flutter 中编写第一个商业应用程序的教训以及相干艰难的更多信息。最终,咱们交付的是一个绝对简略的应用程序,少于 40 个视图,且 Flutter 开发工夫不到 500 小时。
自从咱们交付了第一个应用程序并从客户那里收集到了五星级好评,咱们认为,咱们应该开始更加踊跃地向客户举荐 Flutter。从 2019 年 5 月开始,咱们决定 Flutter 将是咱们挪动技术的第一抉择。同时,咱们将进行在其余不同框架上开发应用程序的工作。
自那时以来,咱们曾经在 Flutter 中交付了 10 多种挪动产品,并提供了数十种 MVP / PoC。当初,该得出结论了。
Flutter 更快
咱们并未在这里探讨实践办法(在此处能够查找 Bran De Connick 的论文),只管这也很乏味。起初咱们重写了基于 Xamarin 和 ReactJS 的 App,将二者进行比照,在后端应用雷同 API 的状况下,与 Xamarin(667h vs 987h)相比,咱们缩小了 33%的工夫,应用 ReactJS(486h vs 704h)相比,则缩小了 31%的工夫。
停下来思考一下这些数字。这些数据答复了如何更快,更便宜地构建挪动应用程序(应用 Flutter)。随着经济不景气,在估算范畴内按时交付产品变得越来越重要。这也意味着对于雷同的估算,您能够多交付 50%的订单。设想一下,您是一名产品负责人,负责开发团队的优先事项,可能将估算壁垒进一步提高 50%。
这将极大地提高团队的创造力和他们交付的工作品质。无关 GastroJob 案例的详细分析,请查看咱们在 Flutter Europe Conference 上的演讲,或在此处查看咱们的案例钻研。
均匀 90%的代码在 iOS 和 Android 之间共享。
咱们的 90%的代码不会在两个本机平台上都编写两次。与本地利用程序开发相比,节俭了 90%的工夫,并且因为一致性和团队围绕一个指标团结而不是分成两个本地流,因而开释了很多创造力。除了共享业务逻辑和用户体验外,咱们还能够应用大量现成的库,这些库带来了更多的益处。首先,他们能够通过为应用程序内应用的许多不同事物提供罕用逻辑来放慢开发过程(例如与服务器(HTTP 客户端)的通信,推送告诉,平安存储,数据库,动画等)。其次,与许多风行的服务(例如 Firebase,地图,领取,社交登录,剖析,解体报告服务等)集成起来更加容易。因而,只有在编写特定于平台的自定义代码时,才须要编写两次代码(别离实用于 iOS 和 Android)。然而,即便那样,在 Dart 和本机代码之间进行桥接还是相当正当的 简略,这将在本文前面进行解释。
更重要的是,如果思考到品质因素,则能够节俭更多,因而从久远来看,该应用程序的保护老本也更低。事实上,咱们钻研在 Xamarin,React Native 和 Flutter 构建的所有我的项目中修复 bug 的工夫,,Flutter 通常须要 8–10%的修复 bug 工夫。而 React Native 须要 7–14%,Xamarin 须要 11–23%。
与 UX / UI 的单干从未如此之好
在 Flutter 我的项目期间,须要 UX / UI 设计师和开发人员之间进行单干。可能是因为他们不须要进行这种乏味的本地改编,而使他们的创造力涣散。然而,从 React Native 团队的教训中也能够冀望失去同样的后果,事实并非如此。当咱们更深刻地开掘时,咱们发现 Flutter 为可能编写丑陋界面的开发人员带来了纯正的欢畅,以前这些界面会带来额定的累赘,从而减慢了步调。因而,他们更违心单干,并且咱们曾经看到结对编程会议开始于设计师与开发人员携手进行现场实验的过程中。通过几次这样的互动,得益于弱小的主题引擎,团队可能为该应用程序提供一种自适应的设计语言,该语言不仅在 Figma 或 Adobe XD 中看起来很棒,而且还提供了最佳的用户体验以及连贯的感觉。正确的设计程序。怎么样 在我的项目的整个生命周期中放弃这种连贯性也很乏味。以前,当 UX / UI 设计师在演示会议上审查产品时,他们在我的项目完结时领有大部分评论,在实践经验之后扭转主见或简化事件。Flutter 的独特之处在于,在我的项目完结时,设计师的参加已齐全隐没,因为他们在试验和谬误的设计循环的初期就开始工作。这也意味着后续 sprint 的优化破费的工夫更少,并且这种继续的单干体现在下一个发行版的稳固 Scrum 速度上。
动画是如此的简略和实惠
在 Flutter 中实现动态视图不仅容易,而且在动画方面也提供了许多新的机会。这将这种 UX-DEV 的单干推向了新的高度,从而实现了前所未有的杰出过渡成果。到目前为止,这仅对大型估算我的项目而言是典型的。现在,感激 Flutter,所有开发人员都能够应用它。之所以会产生这种状况,是因为 Flutter 能够间接在画布上进行渲染,并且能够齐全管制图形,这使咱们可能在所有平台上创立像素完满的图像,而无需像其余跨平台框架一样进行附加的条件格局设置。例如,在应用 React Native 进行绘制时,您基于默认视图,这些视图能够扭转新控件的外观,因而,构建了一个臭代码,该代码依赖于平台,并且与共享代码不应采纳的办法间接矛盾进入部署平台。
Flutter 应用程序更笨重
面对 PWA 业务抉择时,PWA 证实了在手机上增加快捷方式来像保留应用程序一样保留网站是如许容易。咱们先不探讨用户体验,而只思考下载应用程序的累赘。是的,在两种状况下都并非易事。依据 SimiCart 博客,最佳 PWA 网站要求用户在加载时从 4.9MB 到 11.6MB。这远远低于咱们的 Xamarin 应用程序的均匀大小 25MB,甚至低于咱们的 React Native 32MB 应用程序的均匀大小,但十分靠近 Flutter 的平均值 11MB,所有 Flutter 应用程序的范畴为 9 -14MB(请留神,只管这些数字突出显示了模式,但它们不能间接比拟)。您必须抵赖,对于本机应用程序体验,平滑的外观,疾速的反馈以及本机应用程序典型的所有服务(例如推送告诉)而言,此(11MB)的空间非常低。这意味着没有阻碍。用户下载该应用程序,并开始与所有插件和集成一起尽可能高效地应用它。这也意味着应用程序性能更高,因为它们能够应用较小的代码执行相似的工作。与其余跨平台框架相比,这种性能上的晋升间接转化为毫秒数,从而为您提供了较冷的应用程序,动画,CPU 和内存应用方面的更快体验(实际上,在 Flutter 能够提供更好的冷启动应用程序的状况下,即便相比 到 Swift / Kotlin 本机应用程序)。
须要时能够拜访本机代码。
Flutter 的长处在于,挪动团队更心愿应用本机代码并编写一些 Kotlin / Swift 软件包,因为它们能够齐全管制本机实现,而 Xamarin 就是这种状况最终代码在一个孤立的黑匣子中生成。到本机代码的桥也更弱小,因为它们是齐全通明的,因而对于从本机环境转移过去的开发人员来说更敌对。因为采纳了这种办法,因而能够轻松实现特定性能,例如本地领取提供商或一些简单的库。更重要的是,即便是须要生物特色辨认算法进行面部辨认或指纹查看的高级性能,也能够在 Flutter 上顺利运行,这是由 ING 商业在 Flutter 中开发的银行应用程序展现的,该应用程序是在 JakubBiliński 在 Flutter Warsaw Meetup 上展现的(链接)。
Flutter 中的概念非常简单
当咱们须要构建概念证实以查看最危险的假如测试时,与本机代码的集成带来的其余益处。这意味着在客户决定签订整个我的项目的合同之前,咱们能够构建最小的应用程序,以答复最要害的业务或技术问题。在这一点上,咱们不能高估 Flutter 的性能。每次咱们将此类打算定为两天的开发工夫,试图找出在这么短的工夫内能够实现的指标。到目前为止,咱们正在尝试各种 PoC,包含反对 AR 的图像检测零碎(如下),
通过白板图纸绘制高级动画。
建设疾速的 PoC 不仅使咱们可能展现开发的速度,而且还有助于咱们为最终我的项目提供更精确的估算。
开发人员很快乐
从建设外部团队的角度来看,Flutter 被证实是一个不错的抉择。最后,Flutter 开发人员很少,因为没有业余教训。然而,与开发人员具备 C#背景的 Xamarin 相比,状况有所不同,在 Flutter 的状况下,所有候选人都是曾经从本地(次要是 Android)背景转移的挪动开发人员。随着 Flutter 变得越来越受欢迎,并且因为社区组织的沉闷以及定期团聚和网络研讨会的衰亡,可用的候选人数量呈指数增长,现在,有大量的专业人士违心在 Flutter 我的项目中寻找工作通过多年的本机利用程序开发,咱们扭转了认识。得益于文件详尽的 Flutter 代码以及社区提供的其余库的可用性,进行此类转移非常容易。因而,一些以前领有独立挪动团队的公司 正在投资以使它们围绕 Flutter。在 LeanCode,咱们甚至组织了 Flutter 训练营,在湖边进行了为期三天的培训打算,以提供入手教训,并为密集的,为期两个月的学习打算抉择最佳人选,在那里学习 Flutter 随同着做一些非商业我的项目。咱们诧异地留神到,通过 9 个星期的培训,开发人员筹备与他们的共事并肩工作,他们从晚期就开始在 Flutter 中进行编码。如此短暂的学习周期证实,从企业主的角度登程,抉择从本地应用程序切换到 Flutter 并不是一场反动,而是一场外部团队能够施展重要作用的演变。
对技术栈做出正确的决定可能会对您的业务和集体职业产生长久的影响。然而,很少有抉择如此简略。Flutter 曾经成为不可阻挡的静止,不可漠视的力量,并且它仍在倒退并向具备银行或保险等极高质量规范的十分激进的行业扩大(例如 NuBank,ING 和 AXA 等)。
如果思考到甚至在生产阶段公布 Flutter for Web 或 Flutter for Desktop 之前都会产生这种状况,则表明 Flutter for mobile 具备足够的价值,能够在这个十分先进的市场上竞争。无论您从事的行业是什么,晚期采纳者的时代都曾经过来,咱们很快就会见证越来越多的成熟参与者进入 Flutter 生态系统。我心愿这将使咱们可能在 Flutter 中制作出另外 10 款杰出的应用程序后,在明年的总结中分享从这些实现中学到的经验教训。
交换
老孟 Flutter 博客(330 个控件用法 + 实战入门系列文章):http://laomengit.com
欢送退出 Flutter 交换群(微信:laomengit)、关注公众号【老孟 Flutter】: