随着跨平台开发在软件交付市场上的迅速流行,全球顶尖的移动应用开发公司也聚焦到了该领域。近年来,各种简化了跨平台开发的工具也如雨后春笋般层出不穷。其中,最知名的工具之一当属Flutter。它不但可以让您通过简单的数行代码,快速地开发出适用于Android和iOS平台的原生应用程序,而且可以减少专业开发人员的工作量与用时,以便加快交付可扩展的移动应用。
什么是Flutter?
由Google创建的Flutter,是一种被用作开发原生Android和iOS应用的开源技术。其Flutter SDK允许开发者在较短的时间内,通过协同使用各种工具、小部件、以及综合框架,来创建和部署直观的移动应用。目前,Google App Store中的Flutter应用已超过50,000个,其中不乏eBay和Alibaba等大厂应用。Google甚至将Flutter工具包放到了Google Home Hub UI、及其各种Google Assistant模块中,以便大型组织利用Flutter来开发出用户友好的Web和移动应用。
Flutter概览
据统计,目前有大约三分之一的移动开发人员正在使用Flutter作为跨平台移动开发的技术与框架。其主要特性包括如下方面:
- Flutter自带有多种部件和UI元素。
- 您不但可以免费使用Flutter,还能自定义其功能。
- Flutter是全球开发人员正在使用的第二最受欢迎的跨平台技术。
- Flutter不但易于学习、支持快速且面向对象的编程语言—Dart,而且带有用户友好的UI。
- Flutter使用了C++渲染引擎。
- 建立在响应式编程基础上的Flutter架构,足以与React Native相媲美。
Flutter对于应用开发的优势
商业级应用的平台稳定性和整体性能,对于任何企业都是至关重要的。而Flutters恰好能够通过如下方面,来实时支持和及时调整,以保证客户的满意度:
高性能
由Flutter开发的应用程序,可以被直接编译成机器代码,并通过代码解释来抑制各种错误。这为跨平台技术的实现提供了高性能的基础。
节约资源
定制化的应用开发往往需要在渲染引擎中加入高级的编译。而Flutter可以通过调整用户界面,并将其转移到某个平台上,来轻松地实现编译,并节省渲染资源的使用。
开发竞争力
与其他跨平台语言相比,Flutter可以提供更有价值、成本更低的工作流程。而与原生开发相比,建立Flutter移动应用所需的工时则会更少。
高效稳定
由于Flutter的语法需要更少的代码量,且更易于调试和升级,因此它可以协助开发人员更快地编写出具有较高生产力的代码。据此,由Flutter制作出的即用型工具往往能够提供出色的平台稳定性。
更快的面市时间
与使用其他编程语言创建应用程序相比,开发Flutter应用所需的时间会更少,当然也就加快了应用程序的编码交付、以及面市时间。
什么是Flutter开发框架?
自2017年5月面市以来,Flutter是GitHub上增长最快的存储库之一。其改进版框架--v2.0于2021年3月发布。目前,Flutter框架包含了一个完整的UI软件开发工具包(software development kit,SDK)、以及一个拥有包括:滑块、文本输入、以及按钮等各种可重用UI元素的小部件库。它的这些组件和工具包都是免费且开源的。
Flutter的应用开发服务可以支持那些具有完整的Flutter元素的Android、iOS、Windows、Linux、以及Mac系统。由于它能够模仿平台独有的原生体验,因此您可以在任何设备(如移动设备、电视、平板电脑等)上运行Flutter应用。此外,借助Flutter的各种测试和集成API、渲染引擎、现成的小部件、以及命令行工具,您还可以开发出性能卓越的应用。
Flutter基于何种编程语言?
如前所述,Flutter采用的是一种旨在取代经典的JavaScript的Dart编程语言。在Dart程序的帮助下,开发人员可以直接在服务器上运行某个应用程序。而在浏览器中,程序代码会被反编译器Dart2js转换为JavaScript。例如,Google新的操作系统平台—Fuchsia上的各种应用程序,就是使用Dart创建的。Flutters的结构完全可与著名的、面向对象的编程语言Java和C#相媲美。
Flutter应用开发的优点
每种编程语言都有自身的优、缺点,Flutter也不例外。除了对开发人员十分友好以外,Flutter还具有如下各种源于编程语言和开发工具的固有优点:
一个适用于所有平台的代码库
与传统的Android编写方法、以及在iOS设备上调用其他代码库的方式不同,Flutter只需一个代码库。Flutter代码的可重用性功能,方便了开发人员仅编写一个代码库,并将其运用到Android、iOS、Web以桌面等环境中。如此单一的代码库不但有助于减少开发时间和成本,而且能够更快地启动您的应用程序。
小部件(Widget)的概念提供了无数的可能性
Flutter的自定义小部件,非常适合为您开发出色的应用视觉效果。同时,Flutter应用开发服务提供器(service provider)也会协助您构建出一个精良的应用程序,而且您不必担心自己的应用是否会在其他设备上存在的UI问题。
丰富的库
Flutter使用了流行的框架--Skia图形库。这是一个小巧而成熟的开源图形库。每次视图设计出现更改时,它都会重新设计应用程序中的UI。因此,用户会获得快速加载和流畅使用的体验。
使用热重载进行快速测试
在测试了热重载功能后,应用程序的开发速度往往会加快。如果您使用Flutter的话,则无需重新加载应用程序,即可查看到代码的更改效果。据此,您可以轻松地、实时地更改自己的应用程序,以便在开发过程中尽早发现并修复代码中的错误。
Flutter应用程序的缺点
Flutter的缺陷虽然不至于破坏某个交易或应用,但是它作为应用工具包的确存在着如下方面的不足:
体积大
由于带有各种小部件,因此Flutter应用程序往往占用大量的有限空间。而正是因为它体积臃肿,因此需要更长的时间去下载、或更新数据。
更新较为复杂
Flutter需要更新相关模块,以升级操作系统中的编程要素,其中既涉及到Flutter模块与程序中固定元素的结合,又涉及到重新编译、以及在设备上重新安装。
有限的工具和库集
虽然Flutter已经能够提供市场上具有最新功能的各种工具库,但是如果您需要创建特定的工具、扩展某个功能、或是开发一个社区的话,就需要等待一段时间了。例如:Flutter目前尚无法完全支持3D触摸应用,以及一些需要频繁调用相机或电话等功能。
基于Flutter开发的应用
随着Flutter应用开发热度的持续升温,以及对于Flutter开发人员需求的不断增长,Alibaba、Yandex、Airbnb、Philips Hue、Reflectly、Uber、Hookle、以及eBay等顶级新技术公司都持续创建了针对各种用途的Flutter应用服务。
如何开始使用Flutter?
由于Flutter应用的学习曲线比较平滑,因此Flutter开发人员可以通过友好的UI,为自己的应用顺利地构建出自定义的小部件,并将它们与现有的部件进行无缝结合。总地说来,您可以按照如下步骤开始使用Flutter:
- 学习和理解Dart、以及其他相关的编程语言,例如C语言和一些面向对象的概念。
- 加入Gitter聊天室,与具有Flutter实践经验的开发人员进行交流。
- 为待开发的应用程序类型和设计,提供准确的要求和功能列表。
- 通过加入Slack和其他Flutter社区,以了解GitHub存储库,并获取足够的Flutter知识。
- 参加各种技术会议、教程、研讨会、甚至是黑客马拉松来获取业界动态。
- 参加与Flutter相关的网络研讨会、在线课程、浏览Flutter博客、以及参与代码挑战赛等。
- 安装编辑器,并了解其基本原理。
- 根据框架的更新和版本,检查对于系统的要求。
- 选定操作系统,下载合适的Flutter SDK版本。
为什么Flutter是Web开发的最佳选择?
如果您正准备开发一个可以在任何平台上流畅运行的Web应用,那么Flutter能允许您构建出,除了智能手机之外,可以运行在Linux、Mac和Windows上的应用程序。同时,您可以自定义应用界面上的图标、颜色、以及布局等元素,以提高界面的易用性。此外,初创公司也可以使用Google firebase框架,来构建无服务器应用程序,以支持后端应用,并加快开发的整个周期。
译者介绍
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。
原文标题:A Complete Guide on Flutter App Development,作者:Kiran Beladiya