2020-04-19 工作日志

《flutter in action》 翻译

Flutter是一个移动SDK,由谷歌构建和开放;其核心是方便每个人构建美丽的移动应用程序。无论你来自web开发世界还是原生移动开发,Flutter使创建移动应用程序比以往任何时候都更容易,以一种熟悉的,简化的方式。 Flutter是特殊的,因为它使它真正有可能“写一次,并部署在任何地方。 “在本文中,Flutter应用程序将部署到Android、iOS和ChromeOS。 在不久的将来,Flutter应用程序也将作为Web应用程序和桌面应用程序在所有主要操作系统上运行。
简而言之,Flutter是一个真正完整的SDK,用于创建应用程序。 它是一个平台,提供了构建应用程序所需的一切:渲染引擎、UI组件、测试框架、工具,路由器和更多的功能。 其结果是,你可以专注于你的应用程序中有趣的问题。 你可以专注于一些领域特殊问题或者一切值得关注的问题。
Flutter提供的价值是惊人的。 事实上,这就是我在这里写作这本书的原因。 我不得不学习Flutter,因为我的工作,我喜欢它从我开始使用它。 我十分高效的在一夜之间成为了一名移动开发人员,因为Flutter对我的web开发背景非常熟悉。 (Flutter团队说,他们受到React JS的影响)
不过,Flutter不仅仅是简单而已,也是关于控制的。 你在对Flutter框架仅仅有浅薄的认识时,就可以使用Flutter建造特殊高级的移动应用程序。 但是你也可以创造不可思议和独特的功能,你可以这样选择,因为Flutter将所有内容公开给开发人员。
这是一本关于编写一个(相对)少量代码但却能得到一个功能齐全,能工作在iOS和Android的移动应用程序。 在广阔视野中,移动应用程序开发是比较新的, 这可能是开发商和公司的一样的痛点。 但我相信Flutter已经改变了这一点(这是一座我愿意死在上面的山)。
这本书的目标是:使您成为一个(快乐的)Flutter(和Dart)开发人员。
1.1 Flutter为什么使用Dart?
Flutter应用程序是用称为Dart的编程语言编写的。 我将在下面描述Dart
本书的所有内容,但就目前而言,只要知道您在Flutter应用程序是Dart代码。 实际上,对于我们来说,移动开发人员Flutter似乎只不过是Dart库。
Dart也由Google拥有和维护。 这可能会让您暂停。 有对此选择表示怀疑的原因:它不是当今的热门语言之一,很少公司在生产中使用它,因此社区必须很小。 是什么赋予了? 是
Google只是因为它是Google的语言而使用它? 我想这起了作用,但是也有实际原因:
Dart支持即时(JIT)编译和提前(AOT)编译:
AOT编译器将Dart更改为有效的本机代码。 这使Flutter快速(为用户和开发人员赢得了胜利),但也意味着(几乎)整个框架是用Dart编写的。 对您来说,开发人员意味着
您几乎可以自定义所有内容。
Dart的可选JIT编译功能允许存在热重载。快速发展迭代是使用Flutter的乐趣的关键。
Dart是面向对象的。这样可以轻松编写具有视觉效果的用户体验Dart,不需要标记语言。
Dart是一种可预测的高效语言。简单易学,感觉很熟悉。无论您来自动态语言还是静态语言,都可以轻松启动并运行。而且我认为Google拥有Dart是一个优势。在过去的几年中,Dart取得了迈出一大步,成为一种专门用于编写现代UI的好语言。
类型系统和面向对象的特性使您可以轻松地为以下方面编写可重用组件的用户界面。而且Dart包含一些实用的编程功能,这些功能使其变得更容易将您的数据转换为用户界面。最后,基于流的异步编程功能是Dart中的一流公民。这些功能在当今的反应式编程中大量使用。最后,Dart擅长成为一种易于学习的语言。作为我的同事关于招聘的问题,他说:“我们不必寻找Dart员工,而只需寻找聪明的人。”
1.2On Dart
除了深入解释Flutter,我还将介绍Dart的基础知识。 Dart是
编程语言。 事实证明,编程语言可能很难学习。 Dart的基础知识与所有高级语言相似。 如果您来自JavaScript,Java或其他类似C的语言,则会很熟悉Dart的语法
语言。 如果您来自Ruby或Python,Dart的面向对象设计会让您感到很舒服。
像所有语言一样,魔鬼在细节中(而且,正如他们所说,在细节中加倍)。 Dart的乐趣和编写好的Dart代码的复杂性不在于语法,但在语用上。不过,有个好消息。 Dart擅长成为一种“安全”的语言来学习。 谷歌并没有打算用Dart创造任何创新的东西。 Google希望制作一种既简单又高效的语言,并且可以将其编译为JavaScript。Google提出的想法非常适合编写UI。
Flutter可以编译为JavaScript的事实与Flutter的开发关系不大,但是它对该语言产生了有趣的影响。最初,Dart是创建为Web开发语言。舒展目标是包括Dart在浏览器中的运行时,以替代JavaScript。最终,尽管如此,谷歌决定改写一个编译器。这意味着Dart中几乎所有功能都必须适合在JavaScript中语义化。JavaScript是一种独特的语言,不一定具有丰富的功能。它满足了需要完成的任务,而没有任何多余的花哨(我认为是加号)。因此,过去,Dart受JavaScript的限制做。结果是一种看起来更像Java但不太麻烦编写的语言。(我喜欢开玩笑地称它为“ Java Lite”,这是一种称赞。)它的语法没有什么特别令人兴奋的,并且没有特殊的运算符会让你陷入困境。在Dart中(不同于JavaScript),有一种方式是true的:
true。有一种方式是false的:false。if(3){}会使Dart中断,但是在JavaScript中被强制为true。在Dart中,没有模块(例如C#等),实际上只有一个人们在其中编写Dart代码的动态方式:面向对象。在Dart中使用类型,如果您来自Ruby,Python或JavaScript,这可能是一个障碍,但是类型系统不像许多类型语言那样严格。
这就是说Dart是一种相对容易学习的语言,但是您也应该花费必要的需要学习的时间。 用Flutter编写应用程序就是编写Dart。 Flutter是,实际上就是一个Dart类库。 没有涉及标记语言或JSX样式的混合语言。 如果要成为一名高效的Flutter开发人员,将会变得容易得多您可以轻松编写有效的Dart代码。 我将在第2章中深入介绍Dart。
1.3谁使用Flutter?
在撰写本文时,大小公司都在使用Flutter。
自2017年9月以来,我很幸运能够在公司工作时使用Flutter。 在您阅读本文时,Flutter将会进入(至少)版本1.9.0,而我以前的公司将把所有客户都从我们的本机应用程序和Flutter应用程序中。
虽然这不是一本关于我的书,但我会告诉您一些我做的事,因为我想让你知道,我对Flutter的未来充满信心。我以前工作过的公司在企业领域。其产品已被一些大公司使用
例如斯坦福大学,韦费尔和泰勒零件。核心产品是BYOD(带来您自己的数据库)平台,让客户插入一些选项并按一些按钮,它吐出了移动和Web应用程序来管理工作流程和与业务相关的企业问题。该移动应用程序支持离线使用,Esri地图和实时反馈。我们通过Flutter(在移动设备上)和Dart在服务器端完成了所有这些工作。重点是:不要担心此跨平台工具的局限性。我们并不是唯一在生产中使用Flutter的公司。在撰写本文时,Google,AdWords和阿里巴巴都在生产中使用Flutter。您可以查看更多关于谁在Flutter的例子(包括我工作了两年的应用)在Flutter的官网展示页上。
.4谁应该使用Flutter?
不论您在公司中扮演什么角色,或者即使您在创建有趣的应用程序,每个人都应该考虑将Dart用于其下一个项目。
1.4.1团队,项目负责人和CTO :Flutter在我眼前已经证明,它可以将生产力和协作提高几个数量级。在Flutter之前,每次引入新功能到我以前的公司的产品中,它必须被编写和维护三遍由三个不同的团队组成-三个不同的团队几乎无法协作,因为
他们有不同的技能。 Flutter解决了这个问题。我们的三个团队(web,iOS和Android)成为
一个统一的客户团队。我们都有相同的技能,我们都可以合作伸出援助之手。 根据目前的工作,我们正在Flutter中重写本地iOS客户端。它使我们既灵活又高效,同时为用户提供iOS和Android应用。在尝试使用其他未命名的跨平台解决方案失败后,Flutter已被证明是理想的工具。
1.4.2个人开发者:
作为开发人员,我们经常满眼星光,并想开始一个新项目,该项目将发生变化一切。这类工作成功的关键是迅速结束项目。我无法数出准备好开始新项目并退出前的次数,仅仅因为JavaScript构建工具和设置的问题。如果您需要快速建立MVP,并且快速迭代,Flutter恰好可以胜任。
1.4.3代码学校的学生和最近的CS毕业生
代码学校很受欢迎,不幸的是对于毕业生来说,这意味着有很多毕业生在争取相同的初级职位。我给任何人的建议他们的第一项工作是建立一个让您与众不同的投资组合。拥有已发布的手机app的开发经验可以做到这一点,而Flutter则比以往更容易实现手机app的开发。
1.4.4开源开发人员
Flutter是开源的。 Dart是开源的。工具和库是开放的资源。
1.4.5重视速度的人
Flutter适用于希望快速构建不牺牲性能的应用程序的人。速度是指您可以编写代码并进行迭代的速度,Flutter建立的速度。借助热加载功能,Flutter在开发过程中可在不到一秒钟的时间内重建您的应用程序。我还认为Dart可以提高您的生产力,并提高速度。Dart
严格输入且功能齐全。 Dart将使您不必解决已经解决的问题,语法和工具使调试变得轻而易举。
.4.6懒惰的人
我是一个懒惰的开发人员。如果问题解决了,我不想浪费时间再次解决它。Flutter附带了一个庞大的Material Design小部件库,这些小部件既美观又准备使用开箱即用。我不必担心设计和建造移动应用的复杂部分(例如导航抽屉)。我想专注于使我的应用与众不同的业务逻辑。
1.4.7重视控制的人
尽管我很懒,但我确实想知道,如果需要,我可以更改我的任何信息应用程式。 Flutter将框架的每一层暴露给开发人员。如果你需要写一些自定义渲染逻辑,您可以做到。您还可以控制动画帧之间。 Flutter中的每个高级小部件都是一个字符串,可以进行假脱机处理,紧跟框架的内部运作。
1.5这本书是给谁的
本书假设您之前已经开发了一个应用程序。那可能是一个网应用程序,原生移动应用程序,Xamarin或我什至不知道的东西。的您要了解的重要一件事是现代应用程序的工作方式。我不希望您知道如何在整个堆栈中编写代码,只是您知道什么一个现代堆栈组成。本书将重点介绍如何使用Flutter,我将介绍状态,商店,服务等常见术语。
如果您符合这些条件,我可以假设您已经熟悉了所有编程语言中的线程。您不需要了解Dart,但是您知道需要了解基本数据结构(哈希表,列表等)和所有功能高级语言(控制流,循环等)。
最后,本书假定您大致了解一些有关软件工程的高级信息。例如,Dart和Flutter完全在
面向对象范例阵营。如果您是初级开发人员,高级开发人员或介于两者之间,则此书非常适合您。前提条件就是您已经从事过之前的大型代码库,您对学习Flutter感兴趣。
1.6其他移动开发选项
在我提出您对其他选项的未经请求的意见之前,我想澄清一下这一点:好的开发人员会认真考虑应该使用哪些工具和技术。用于各种不同的情况。而Flutter并不是100%的答案。
(但我会尽力说服您。)
1.6.1原生开发(iOS和Android)
您的首选是编写适用于iOS和Android的原生应用程序。这给你最大控制,调试工具,并(可能)获得最佳性能。在公司里可能意味着您必须编写所有内容两次:每个平台一次。你可能
需要具有不同技能的不同团队的不同开发人员,而这些开发人员很难互相帮助。
1.6.2跨平台JavaScript选项
您的第二个选择:跨平台的基于JavaScript的工具,例如Web view和React Native。这些也不是坏选择。您在原生开发中遇到的问题消失了。您团队中的每个前端Web开发人员都可以参与其中,;他们所需要的只是一些现代的JavaScript技能。这正是Airbnb,Facebook和Twitter等大型公司在核心产品上使用React Native的原因。当然,也有一些缺点。 (您知道这样做会有弊端。)最大的称为JavaScript桥。 跨平台构建的第一个“移动应用程序”只是运行的网络视图WebKit(浏览器渲染引擎)。这些实际上是嵌入式网页。的这样做的问题基本上是,操作DOM非常昂贵,并且效果不佳,无法提供出色的移动体验。一些平台通过构建JavaScript桥解决了这个问题,让JavaScript直接与本机代码对话。这比网络浏览量,因为它消除了等式中的DOM,但仍然不理想。每次您的应用程序需要直接与渲染引擎对话时,都必须将其编译为本机代码以“跨越桥梁”。在一次互动中,桥梁必须是
交叉两次:一次从平台到应用程序,然后再一次从应用程序到平台

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容