本文原文:https://www.freecodecamp.org/…,本文为 CSDN 翻译,转载请注明起源出处。作者 |Eric Grandt 译者 | 王艳妮,责编 | 屠敏 出品 |CSDN(ID:CSDNnews)
随着零碎以及利用复杂性的日益增高,「write once,run anywhere」开始成为越来越多开发工具的终极目标。
基于此,Google 于 2017 年的 I/O 大会上隆重推出了挪动 UI 框架 Flutter,能够让开发者在 iOS 和 Android 零碎上疾速构建高质量的原生用户界面。与此同时,苹果也于 2019 年 WWDC 为开发者们带来了一套可横跨苹果几大操作系统的 UI 框架 SwiftUI。
那么在此趋势下,相似 Flutter 的这种工具真的是新一代挪动开发的将来吗?
几年前,我在 Android 和 iOS 开发中略有涉足,应用的是 Java 和 Objective-C。在花了大概一个月的工夫学习后,我决定不再深刻学习了。我就是无奈找到那种深刻其中的状态。
但最近,我理解了 Flutter,并决定在挪动利用程序开发方向上再试上一试。我当即就爱上了它,因为它使开发多平台应用程序变得贼乏味。自从理解它以来,我曾经应用它创立了一个 app 和一个库。Flutter 仿佛是一个十分有前景的一步,上面我想解释一下我之所以置信这一点的几方面的起因。
1 由 Dart 提供技术支持
Flutter 应用的是由谷歌开发的 Dart 语言。如果你之前应用过 Java,那么会比拟相熟 Dart 的语法,因为它们十分类似。但除了语法之外,Dart 跟 Java 就很不同了。
我不打算深刻探讨 Dart,免得跑题,但我想讨论一下我认为它最有用的性能。这个性能就是异步操作。Dart 不仅反对异步操作,而且还使其变得非常容易。
如果你正在进行 IO 或其余耗时的操作(例如查询数据库),那么你有可能在所有 Flutter 应用程序中应用异步操作。如果没有异步操作,任何耗时的操作都会导致程序解冻直到此操作实现。为了避免这种状况,Dart 为咱们提供了 async 和 await 关键字,以容许咱们的程序在期待这些较长操作实现的过程中持续往下执行。
让咱们看看几个例子:一个有异步操作,一个没有。
并别离查看输入:
这不太现实。没人会想用在执行长时间操作时会卡住的 App。所以让咱们略微批改一下并应用 async 和 await 关键字。
并再次输入:
有了异步操作,咱们在执行须要比拟久能力实现的代码的同时,其余代码的执行也不会被障碍。
2 只写一次代码,就能同时在 Android 和 iOS 上运行
思考到须要为 Android 和 iOS 应用不同的代码库,开发挪动应用程序可能须要破费大量工夫。除非您应用像 Flutter 这样的 SDK,这样您就将领有一个能适配两个操作系统的代码库。不仅如此,你还能够齐全原生地运行它们。这意味着诸如浏览页面和导航之类的货色,完满配合不同的操作系统。
一言以蔽之,只有您有个设施或模拟器在运行着,Flutter 就能够使构建和运行您的应用程序来进行测试的过程简略到动动手指就能实现。
3 UI 开发
UI 开发简直是我最不期待的事件之一。我更像是一个后端开发人员,所以当波及到重大依赖它的货色时,我只想要一些简略的货色。这就是 Flutter 在我眼中闪耀的中央。
UI 通过将不同的小部件组合在一起并批改它们以适宜你的 App 外观来创立。你简直能够齐全管制这些小部件的显示方式,因而你最终总是会得偿所愿。为了布局 UI,能够应用诸如 Row,Column 和 Container 之类的小部件。对于内容,有诸如 Text 和 RaisedButton 之类。这只是 Flutter 提供的小部件中的几个,除这些之外还有很多。应用这些小部件,咱们能够构建一个非常简单的 UI:
Flutter 像一个领有各种各样道具的魔术师,使你能轻而易举地构建 App 的主题。你能够通过手动更改字体,色彩,并一一设置所有内容,但这须要太长时间了。相同,Flutter 为咱们提供了一个名为 ThemeData 的货色,它容许咱们为色彩,字体,输出字段等等设值。此性能在放弃利用外观的一致性方面很杰出。
应用此 ThemeData,咱们设置应用程序色彩,字体系列和一些文本款式。除文本款式之外的所有内容都将主动利用于整个 app 范畴。每个小部件的文本款式必须手动地一个一个设置,但这依然很简略:
为了进一步提高效率,Flutter 能够热从新加载应用程序,因而您无需在每次更改 UI 时从新关上它。您当初能够进行更改,保留,而后在大略一秒内就能看到更改后的成果。
4 库
Flutter 提供了许多开箱即用的弱小性能,但有时你须要更多功能。思考到 Dart 和 Flutter 的大量可用的库,这基本不是问题。是否有趣味在你的利用中投放广告?有这方面的库。想要新的小部件吗?有这方面的库。
如果你更喜爱本人入手 DIY,能够创立本人的库并马上就能与社区其他人分享。向我的项目增加库很简略,能够通过向 pubspec.yaml 文件增加一行代码来实现。例如,如果要增加 sqflite 库:
将它增加到文件后,运行 flutter packages get,这样就好了。各种各样的库使开发 Flutter 应用程序变得轻而易举,并为开发过程节俭了大量工夫。
5 后端开发
当初大多数 App 都依赖于某种数据,所有这些数据须要存储在某个中央,以便当前能够显示和应用。因而,在寻找应用新 SDK(例如 Flutter)创立利用时,牢记这一点十分重要。
再反复一次,Flutter App 是应用 Dart 制作的,而 Dart 在后端开发方面十分杰出。我在本文中谈到了很多简单易行的性能,Dart 和 Flutter 的后端开发也不例外。不论是对于初学者还是专家,创立数据驱动的 App 都非常简单,但这种简略性并不等同于品质底下。
能够应用库,以便你应用所抉择的数据库。应用 sqflite 库,咱们能够十分疾速地启动并运行 SQLite 数据库。感激单件模式,咱们能够拜访数据库并从简直任何中央都能够进行查问,而无需每次都从新创立一个对象。
从数据库中检索数据后,能够应用一个模型将其转换为对象。或者,如果要将对象存储在数据库中,能够应用雷同的模型将其转换为 JSON。
如果没有将其显示给用户的办法,这些数据就不是那么有用了。这就是 Flutter 带着诸如 FutureBuilder 或 StreamBuilder 这样的小部件退场的时候了。如果您对应用 Flutter,SQLite 和其余技术来创立数据驱动型 App 有趣味做更深一步的理解,我倡议你查看我写的这方面的文章:
- 《在 Flutter 中应用 Streams,BLoCs 和 SQLite》:Streams,BLoCs 和 SQLite 在解决 Flutter 中的数据时是一个很好的组合(https://medium.com/@erigitic/…)。
6 最初的一些思考
有了 Flutter,就有了简直无穷无尽的可能性,因而即便是体量微小的 App 也能够轻松地被创立进去。如果你是做挪动 App 开发的并且尚未尝试过 Flutter,我强烈建议你试一下,因为我置信你也会爱上它的。应用 Flutter 几个月之后,我认为能够说这是挪动开发的将来。如果不能算将来的话,这也相对是朝着正确方向迈出去的一步。
逆锋起笔
是一个专一于程序员圈子的技术平台,你能够播种最新技术动静
、最新内测资格
、BAT 等大厂的教训
、精品学习材料
、职业路线
、副业思维
,微信搜寻逆锋起笔
关注!