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