Flutter 凉了吗?

开发者技术前线

共 4678字,需浏览 10分钟

 ·

2020-09-10 19:02

点击“开发者技术前线”,选择“星标?”

在看|星标|留言,  真爱


作者 | Eric Grandt出品 | CSDN(ID:CSDNnews)
原文:https://www.freecodecamp.org/news/why-i-think-flutter-is-the-future-of-mobile-app-development-768332b73c0d/

随着系统以及应用复杂性的日益增高,「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/using-streams-blocs-and-sqlite-in-flutter-2e59e1f7cdce)。


6


最后的一些思考

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


近年来,随着移动智能设备的快速普及,移动多端统一开发框架已成为一个热门话题。闲鱼是国内最早接触使用 Flutter的团队,经过多次研讨验证并大规模上线,在App性能、稳定性、开发效率上收益甚多。



这本《Flutter技术解析与实战》并非基础知识的简单罗列,而是从一线问题出发,循序渐进,娓娓道来。它从通用业务工程化开始,进而展开Flutter在闲鱼整体云端一体化架构的创新思考。


—— 阿里巴巴资深技术专家 孙兵(酒丐)




近年来,随着移动智能设备的快速普及,移动多端统一开发框架已成为一个热门话题。闲鱼是国内最早接触使用 Flutter 的团队,经过多次研讨验证并大规模上线,在App性能、稳定性、开发效率上收益甚多。


去年,闲鱼发布了《Flutter in action》电子书,系统地总结了闲鱼在Flutter开发实践过程中的一手实践知识和技术沉淀。



现在《Flutter in action》全面升级,纳入更多创新思考并重新整理全书逻辑——《Flutter 技术解析与实战》正式发布!



长按二维码2秒关注:GitHub中文社区

回复”Flutter技术“ 获取最新PDF

长按二维码2秒关注


这本书并非基础知识的简单罗列,而是从一线问题出发,循序渐进,娓娓道来。


它从通用业务工程化开始,进而展开Flutter在闲鱼整体云端一体化架构的创新思考。




  • 第 1、2 章重点关注 混合工程搭建以及关键能力扩展和优化

  • 第 3、4 章探讨关于 大规模工程实践 中遇到的具体问题,如 应用架构设计、 性能统计和调优等

  • 第 5 章将给出整体的 梳理和总结,以期读者可以有一个自顶向下展开的阅读路径


Flutter开源工具大集合

闲鱼Flutter应用框架Fish Redux、开发利器AspectD、FlutterBoost等一众开发工具正式开源,现在《Flutter in action》一次帮你找全了。开源地址+技术解析,手把手教你Flutter应用框架和混合开发原理!

闲鱼Flutter企业级应用实践

随着无线,IoT的发展,5G的到来,移动研发越发向多端化发展。传统的基于Native+Web+服务端的开发方式,研发效率低下,显然已经无法适应发展需要。

而Flutter是Google开源的跨端便携UI工具包,除了具有非常优秀的跨端渲染一致性,还具备非常高效的研发体验,丰富的开箱即用的UI组件,以及跟Native媲美的性能体验。由于它的众多优势,也使得Flutter成为了近些年来热门的新技术。

在这本书中将详细讲解闲鱼Flutter&FaaS云端一体化架构,和闲鱼基于Flutter的架构演进与创新,学习一套全面的Flutter架构应用方案。

混合开发实践指南

你将在这里看到闲鱼技术团队利用Flutter技术改造和上线复杂业务的混合工程改造实践、抽取Flutter依赖到远程的实现细节、以及使用Plugin桥接获取设备信息、使用基础网络库等混合开发实践指南。

这些实践遍布闲鱼各大业务线和应用场景,为你使用Flutter打造自己的研发体系探索一条实践之路。

Flutter的深入进阶教程

在获得开源工具与开发实践指南后,你还将在本书中学到Flutter的更多应用场景。

它们包括了如何低成本实现Flutter富文本、设计一个高准确率的Flutter埋点框架、Flutter外接纹理、可定制化的Flutter相册组件等等深入进阶内容。

目前本书的电子版开放下载(30M左右 ,请开启wifi环境),我已经帮大家下载好了。

长按二维码2秒关注:GitHub中文社区

回复”Flutter技术“ 获取该PDF

长按二维码2秒关注

浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报