随着系统以及应用复杂性的日益增高,「write once,run anywhere」开始成为越来越多开发工具的终极目标。

基于此,Google 于 2017 年的 I/O 大会上隆重推出了移动 UI 框架 Flutter,可以让开发者在 iOS 和 Android 系统上快速构建高质量的原生用户界面。与此同时,苹果也于今年 WWDC 为开发者们带来了一套可横跨苹果几大操作系统的 UI 框架 SwiftUI。

那么在此趋势下,类似 Flutter 的这种工具真的是新一代移动开发的未来吗?

作者 | Eric Grandt

译者 | 王艳妮,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

几年前,我在Android和iOS开发中略有涉足,使用的是Java和Objective-C。在花了大约一个月的时间学习后,我决定不再深入学习了。我就是无法找到那种深入其中的状态。

但最近,我了解了Flutter,并决定在移动应用程序开发方向上再试上一试。我当即就爱上了它,因为它使开发多平台应用程序变得贼有趣。自从了解它以来,我已经使用它创建了一个app和一个库。 Flutter似乎是一个非常有前景的一步,下面我想解释一下我之所以相信这一点的几方面的原因。

由Dart提供技术支持

Flutter使用的是由谷歌开发的Dart语言。如果你之前使用过Java,那么会比较熟悉Dart的语法,因为它们非常相似。但除了语法之外,Dart跟Java就很不同了。

我不打算深入讨论Dart,以免跑题,但我想讨论一下我认为它最有用的功能。这个功能就是异步操作。 Dart不仅支持异步操作,而且还使其变得非常容易。

如果你正在进行IO或其他耗时的操作(例如查询数据库),那么你有可能在所有Flutter应用程序中使用异步操作。如果没有异步操作,任何耗时的操作都会导致程序冻结直到此操作完成。为了防止这种情况,Dart为我们提供了async和await关键字,以允许我们的程序在等待这些较长操作完成的过程中继续往下执行。

让我们看看几个例子:一个有异步操作,一个没有。

并分别查看输出:

这不太理想。没人会想用在执行长时间操作时会卡住的App。所以让我们稍微修改一下并使用async和await关键字。

并再次输出:

有了异步操作,我们在执行需要比较久才能完成的代码的同时,其余代码的执行也不会被妨碍。

只写一次代码,就能同时在Android和iOS上运行

考虑到需要为Android和iOS使用不同的代码库,开发移动应用程序可能需要花费大量时间。除非您使用像Flutter这样的SDK,这样您就将拥有一个能适配两个操作系统的代码库。不仅如此,你还可以完全原生地运行它们。这意味着诸如浏览页面和导航之类的东西,完美配合不同的操作系统。

一言以蔽之,只要您有个设备或模拟器在运行着,Flutter就可以使构建和运行您的应用程序来进行测试的过程简单到动动手指就能完成。

UI开发

UI开发几乎是我最不期待的事情之一。我更像是一个后端开发人员,所以当涉及到严重依赖它的东西时,我只想要一些简单的东西。这就是Flutter在我眼中闪耀的地方。

UI通过将不同的小部件组合在一起并修改它们以适合你的App外观来创建。你几乎可以完全控制这些小部件的显示方式,因此你最终总是会得偿所愿。为了布局UI,可以使用诸如Row,Column和Container之类的小部件。对于内容,有诸如Text和RaisedButton之类。这只是Flutter提供的小部件中的几个,除这些之外还有很多。使用这些小部件,我们可以构建一个非常简单的UI:

Flutter像一个拥有各种各样道具的魔术师,使你能轻而易举地构建App的主题。你可以通过手动更改字体,颜色,并逐个设置所有内容,但这需要太长时间了。 相反,Flutter为我们提供了一个名为ThemeData的东西,它允许我们为颜色,字体,输入字段等等设值。 此功能在保持应用外观的一致性方面很出色。

使用此ThemeData,我们设置应用程序颜色,字体系列和一些文本样式。 除文本样式之外的所有内容都将自动应用于整个app范围。 每个小部件的文本样式必须手动地一个一个设置,但这仍然很简单:

为了进一步提高效率,Flutter可以热重新加载应用程序,因此您无需在每次更改UI时重新打开它。您现在可以进行更改,保存,然后在大概一秒内就能看到更改后的效果。

Flutter提供了许多开箱即用的强大功能,但有时你需要更多功能。考虑到Dart和Flutter的大量可用的库,这根本不是问题。是否有兴趣在你的应用中投放广告?有这方面的库。想要新的小部件吗?有这方面的库。

如果你更喜欢自己动手DIY,可以创建自己的库并马上就能与社区其他人分享。向项目添加库很简单,可以通过向pubspec.yaml文件添加一行代码来完成。例如,如果要添加sqflite库:

将它添加到文件后,运行flutter packages get,这样就好了。各种各样的库使开发Flutter应用程序变得轻而易举,并为开发过程节省了大量时间。

后端开发

现在大多数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/using-streams-blocs-and-sqlite-in-flutter-2e59e1f7cdce)。

最后的一些思考

有了Flutter,就有了几乎无穷无尽的可能性,因此即使是体量巨大的App也可以轻松地被创建出来。如果你是做移动App开发的并且尚未尝试过Flutter,我强烈建议你试一下,因为我相信你也会爱上它的。使用Flutter几个月之后,我认为可以说这是移动开发的未来。如果不能算未来的话,这也绝对是朝着正确方向迈出去的一步。

原文:https://www.freecodecamp.org/news/why-i-think-flutter-is-the-future-of-mobile-app-development-768332b73c0d/

本文为 CSDN 翻译,转载请注明来源出处。


Python零基础到实战第一课

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

史上最强最贵 Mac Pro 诞生,iPadOS 和 iOS 分家!WWDC19 全面总结

☞极客头条

☞Chrome 成为互联网看门人?!

☞从沉迷游戏到信奥冠军、保送清华,这位天才少年是如何做到的?| 人物志

☞被小公司毁掉的名校毕业生 | 程序员有话说

如何在厕所、垃圾桶或小树林捡一枚BCH?看完后我笑了...

☞Unix风雨五十年:老兵远去,新秀崛起

☞Python从入门到精通,这篇文章为你列出了25个关键技术点(附代码)

IEEE“撑不住”了?声明解除对华为评审限制

☞敲代码时,程序员戴耳机究竟在听什么?

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

Flutter 是移动应用程序开发的未来?相关推荐

  1. flutter开发小程序_为什么我认为Flutter是移动应用程序开发的未来

    flutter开发小程序 I dabbled a bit in Android and iOS development quite a few years back using Java and Ob ...

  2. 小程序开发的未来市场前景

    说起小程序想必大家都不陌生,这个由2016年9月21日,微信向开发者发起小程序的内测邀请,到2017年1月9日正式上线,这么低调的小程序谁又能想到它在2019年4月就几乎拥有全国一半的用户. 在这个互 ...

  3. 为什么 Flutter 已经为企业应用程序开发做好了准备

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4cowIVYw-1622584445972)(https://ducafecat.tech/2021/06/02/tra ...

  4. 为什么Flutter已成为2020年开发移动应用程序的最佳选择?

    您是一个开发者并计划启动一个移动应用程序,但仍处于困境中,您应该在2020年选择哪种跨平台框架?Flutter可以使初创企业更舒适地推出功能丰富的移动应用程序,而不会束手无策 怎么样? 让我们深入了解 ...

  5. android应用程序开发_Kotlin与Flutter:Android跨平台应用程序开发,到底选择哪个?...

    移动互联时代--应用为王 移动互联网时代,很难想象没有应用程序的生活.从我们睁眼醒来的那一刻到我们真正睡觉的那一刻,无数的应用程序围绕着我们.根据统计,国人平均在移动设备上花费4个小时以上! 而这其中 ...

  6. Flutter教程之 02 Flutter 桌面程序开发入门教程运行hello world (教程含源码)

    文章目的 我很高兴 Flutter 来到桌面应用程序开发,当然,这只是一个开始,但你今天已经可以尝试了. 我想向您介绍如何使用基于macOS的 Flutter 教程编写您的第一个桌面应用程序. 1.开 ...

  7. 颤振稳定性叶瓣图_为什么颤振实际上是应用程序开发中的下一件大事

    颤振稳定性叶瓣图 Last week, Michael Long wrote an article explaining in detail why Flutter won't be the &quo ...

  8. Microsoft 365及应用开发的未来:微软BUILD 2018大会第二天主题演讲

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Joe Belfiore是微软操作系统组全球副总裁,他主持了微软Build大会第二天的主题演 ...

  9. 移动应用开发的未来是什么?——六大趋势指引企业顺水行舟

    在智能手机如此普及的今天,人们时常忘记移动应用是"新事物".自20世纪70年代初,第一部手机问世以来,移动应用开发经历了多次迭代,极大地改变了我们的生活. 目前还没有任何移动应用开 ...

最新文章

  1. 取得 Git 仓库 —— Git 学习笔记 04
  2. 存储过程传入可以为空的参数
  3. px,em,rem,vw单位在网页和移动端的应用
  4. I - Interesting Permutation Gym - 102394I(排列组合)
  5. 计算机支持协同工作不是多媒体应用,计算机支持的协同工作概观.PDF
  6. 查看网卡流量:nload
  7. 2.python数据结构的性能分析
  8. Oracle exp/imp导出导入命令及数据库备份
  9. 看mysql手册中模式(SQL_MODE)学到的知识
  10. 改变系统TCP默认 MSS
  11. OSChina 周四乱弹 ——小小编辑去死远点了
  12. 右键菜单项删除 pycharm vs
  13. 搞定制作好看icon
  14. SAP-MM科目自动分配解析-(4-1)- 物料的配置影响
  15. python中的连乘_python连乘
  16. Android版简历(四)
  17. 通用汽车新战略:“逃离”汽车制造,能否冲破“围城”之困
  18. 怎样训练左右手协调_钢琴的左右手应该怎么协调
  19. anfis matlab,这是一个anfis模糊神经网络代码,有个地方不懂想问问大家
  20. 前端学习总结:3、javascript基础

热门文章

  1. kubenetes 1.4 修改kubelet启动参数修改方法
  2. sublime text 3编写C语言或者C++的snippet
  3. mysqlli php7.0_php7配置mysqli并使用mysqli连接mysql
  4. C++函数和类的封装
  5. Linux使用SIGALARM信号的定时器
  6. 中国替代运动器材市场趋势报告、技术动态创新及市场预测
  7. 中国连续纤维毡行业市场供需与战略研究报告
  8. html和css的缺点,个人缺点20个
  9. 2021大二实训part02
  10. ubuntu英伟达显卡驱动安装记录2