像 Flutter 这样的工具真的是新一代移动开发的未来吗?
Google 在 2017 年 I/O 大会上隆重推出了移动 UI 框架 Flutter,它可以让开发者在 iOS 和 Android 系统上快速构建高质量的原生用户界面。同时,苹果还在今年的 WWDC 上为开发者带来了一套可以跨越苹果各大操作系统的 UI 框架 SwiftUI。
那么在这种趋势下,像Flutter这样的工具真的是新一代移动开发的未来吗?
作者 |埃里克·格兰特
译者 |王艳妮,编辑 |由屠敏制作
| CSDN(ID:CSDNnews)
几年前,我接触过一些使用 Java 和 Objective-C 进行 Android 和 iOS 开发。经过大约一个月的学习后,我决定不再继续学习。我只是找不到其中的深层状态。
但最近了解了Flutter,决定在移动应用开发中再尝试一下。我立即爱上了它,因为它使开发多平台应用程序变得非常有趣。自从了解它以来,我使用它创建了一个应用程序和一个库。 Flutter 似乎是一个非常有希望的一步,下面我想解释一下我相信这一点的几个原因。
由 Dart 技术支持
Flutter 使用 Google 开发的 Dart 语言。如果您以前使用过 Java,您将会熟悉 Dart 的语法,因为它们非常相似。但抛开语法不谈,Dart 与 Java 有很大不同。
我不会深入讨论 Dart,以免偏离主题,但我确实想讨论我认为它最有用的功能。该函数是一个异步操作。 Dart 不仅支持异步操作,而且使异步操作变得非常简单。
如果您执行 IO 或其他耗时的操作(例如查询数据库),那么您有可能在所有 Flutter 应用程序中使用异步操作。如果没有异步操作,任何耗时的操作都会导致程序冻结,直到该操作完成。为了防止这种情况,Dart 为我们提供了 async 和 wait 关键字,以允许我们的程序在等待这些较长操作完成时继续运行。
让我们看几个示例:一个具有异步操作,一个不具有异步操作。
并分别查看输出:
这不太理想。没有人愿意使用在执行长期操作时冻结的应用程序。因此,让我们稍微改变一下并使用 async 和await 关键字。
并再次输出:
使用异步操作,当我们执行需要很长时间才能完成的代码时,不会阻止其他代码的执行。
编写一次代码并在 Android 和 iOS 上运行
考虑到需要为 Android 和 iOS 使用不同的代码库,移动应用程序开发可能需要花费大量时间。除非您使用像 Flutter 这样的 SDK,否则您将拥有一个可适应两种操作系统的代码库。不仅如此,您还可以完全本机运行它们。这意味着浏览页面和导航等功能可以在不同的操作系统上完美运行。
简而言之,只要您有一个正在运行的设备或模拟器,Flutter 就可以轻松构建和运行您的应用程序以进行测试。
UI 开发
UI 开发几乎是我最不期待的事情之一。我更多的是后端开发人员,所以当涉及到严重依赖后端的事情时,我只想要简单的东西。这就是Flutter让我眼前一亮的地方。
UI 是通过将不同的小部件组合在一起并更改它们以适应您的应用程序的外观而创建的。您几乎可以完全控制这些小部件的显示方式,因此您总能得到您想要的结果。可以使用行、列和容器等用户界面小部件来设计。对于内容,有诸如 Text 和 RaisingButton 之类的东西。这些只是 Flutter 提供的一些小部件,还有更多。使用这些小部件,我们可以构建一个非常简单的用户界面:
Flutter 就像一个拥有一系列道具的魔术师,因此您可以轻松构建应用程序的主题。您可以通过手动更改字体、颜色并一一设置所有内容来完成此操作,但这需要很长时间。相反,Flutter 为我们提供了名为 ThemeData 的东西,它允许我们设置颜色、字体、输入字段等的值。此功能非常适合保持应用程序的外观一致。
使用此 ThemeData 我们设置应用程序颜色、字体系列和一些文本样式。除文本样式外的所有内容都将自动应用于整个应用程序。每个 widget 的文本样式需要手动一一设置,但这仍然很简单:
为了进一步提高效率,Flutter 可以重新加载应用程序,这样您就不必每次更改 UI 时都重新打开它。您现在可以进行更改、保存并在大约一秒钟内查看它们的实际效果。
库
Flutter 提供了许多开箱即用的强大功能,但有时您需要更多功能。鉴于 Dart 和 Flutter 有大量可用的库,这根本不是问题。对在您的应用程序中投放广告感兴趣吗?有一些库可以做到这一点。想要新的小部件吗?有一些库可以做到这一点。
如果您喜欢 DIY,您可以创建自己的库并立即与社区其他人共享。向项目添加库很简单,可以通过向 pubspec.yaml 文件添加一行代码来完成。例如,如果您想添加 sqflite 库:
将其添加到文件后,运行 flutter packages 就可以了。广泛的库使开发 Flutter 应用程序变得轻而易举,并在开发过程中节省大量时间。
后端开发
当今大多数应用程序都依赖某种形式的数据,所有这些数据都需要存储在某个地方,以便以后查看和使用。因此,当您想要使用新的 SDK(例如 Flutter)创建应用程序时,请务必牢记这一点。
重申一下,Flutter App 是使用 Dart 制作的,Dart 非常适合后端开发。我在这篇文章中谈到了很多简单易用的功能,Dart 和 Flutter 的后端开发也不例外。创建数据驱动的应用程序对于初学者和专家来说都很简单,但简单并不等于质量。
提供了库,因此您可以使用您选择的数据库。通过使用 sqflite 库,我们可以非常快速地启动并运行 SQLite 数据库。由于单例模式,我们几乎可以从任何地方访问和查询数据库,而不必每次都重新创建对象。
从数据库中检索数据后,可以使用模型将其转换为对象。或者,如果要将对象存储在数据库中,可以使用相同的模型将其转换为 JSON。
如果无法向用户显示该数据,那么它就没那么有用。这就是 Flutter 与 FutureBuilder 或 StreamBuilder 等小部件发挥作用的时候。如果您有兴趣了解有关使用 Flutter、SQLite 和其他技术创建数据驱动应用程序的更多信息,我建议您查看我关于此主题的文章:
- 《在Flutter中使用Streams,BLoCs和SQLite》:处理 Flutter 中的流、BLoC 和 SQLite 使用数据的绝佳组合(https://medium.com/@erigitic/using-streams-blocs-and-sqlite-in-flutter-2e59e1f7cdce)。
一些最后的想法
使用 Flutter,可能性几乎是无限的,因此即使是大型应用程序也可以轻松创建。如果您从事移动应用开发并且尚未尝试过 Flutter,我强烈建议您尝试一下,因为我认为您也会爱上它。使用 Flutter 几个月后,我认为可以肯定地说,这就是移动开发的未来。这绝对是朝着正确方向迈出的一步,即使不是未来。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。