Google的10个问题与解答

图片信誉

在过去的几个月中,我有机会研究和练习Flutter的功能。 我读了许多有关它的文章,还弄脏了手,并使用Flutter构建了几个小型应用程序。 在本文中,我想通过一系列问题和答案来一窥Flutter的含义,希望您已经想到了至少其中一些问题,我可以回答。

1.什么是Flutter?

Flutter是一个开源的跨平台移动应用程序开发框架,正如Google所定义的那样,“允许您从单个代码库在iOS和Android上构建漂亮的本机应用程序 ”。 第一个alpha版本于2017年5月发布; 1.5年后,Flutter于2018年12月4日获得了第一个稳定的1.0版本。

除了支持Android和iOS平台之外,Flutter还将是为即将推出的Google操作系统Fuchsia开发应用程序的主要框架。 它目前正在开发中,有可能逐步取代Android。

2.什么是Dart? 又为什么呢

Dart是用于开发Flutter应用程序的面向对象的垃圾收集编程语言。 它也是由Google创建的,但是是开源的,因此它在Google内部和外部都有社区。

除了Google起源之外,Dart还被选为Flutter的语言,其原因如下:它是极少数可以同时编译AOT(提前和JIT(即时)的语言之一。

  • JIT编译在应用程序开发过程中使用,因为它可以通过在运行时即时编译代码来实现热重载(关于该问题,我将在下一个问题中详细介绍)和快速开发周期。
  • 完成开发并准备发布时,将使用AOT编译 。 然后将代码AOT编译为本地代码,从而实现应用程序的快速启动和高效执行。

就个人而言,我对Dart的经验是,如果您是已经熟悉Java或类似语言的开发人员,那么只需几天就可以习惯它。 因此,例如,如果您是Android开发人员,则该语言的学习曲线对您来说应该非常低。

凭借其简洁但灵活的语法,Dart可以被识别为仅包含任何高级编程语言中最需要的功能的语言。

3. Flutter是如何原生的?
Flutter应用程序与平台的互动–图库图片

Flutter使用称为Skia的图形引擎在应用程序端执行所有UI渲染。 这意味着它不依赖于平台提供的OEM小部件。 它只需要平台的画布来绘制自己的渲染图。 这样可以确保可预测性以及开发人员对小部件和布局的完全控制。

Flutter的内部窗口小部件树–图库图片

除此之外,Flutter将其结构保留为小部件树。 顺便说一句, Flutter中的几乎所有内容都是一个小部件 ,它使您能够在小部件内的小部件结构中构建应用程序。 这种内部树结构允许Skia仅呈现需要更新的小部件,并从缓存中检索未更改甚至移动的小部件。

4.与React Native有什么不同?
React Native应用程序与平台的交互–图库图片

React Native利用JavaScript桥将其小部件转换为OEM小部件。 而且,由于它不断进行转换(比较和更新周期),因此会造成瓶颈并导致性能下降。

相反,尽管仍然使用反应视图的优势,但Flutter并未使用这种桥将自己的小部件转换为OEM小部件,如上一个问题的答案所示。 除了快速,流畅的UI性能和可预测性之外,这是它的另一个优点,在Android KitKat设备上看到的内容与在Android Pie上看到的内容相同。 这种兼容性是显而易见的,因为Flutter不使用OEM小部件,并且不受不同Android版本之间UI / UX更改的影响。

5.没有布局预览...这是问题吗?
扑的热重载- 图片来源

根本不!Flutter具有一项称为“热重载”的功能 ,使您可以在应用程序运行时热交换代码更改。 需要花费一秒钟的时间才能在屏幕上看到更改的效果。 它肯定是快速的,但也很聪明,因为它可以在热重载之间保留应用程序的运行时状态。 结果,您将获得比布局预览更好,更有用的功能。

6.什么是Flutter小部件?
一个简单的Flutter应用程序的小部件树–图库图片

Flutter应用程序被视为小部件 。 在上面给出的小部件树中,您看到的每个节点都是一个小部件。 即使要将小部件放在屏幕上居中 ,也可以用Center包裹小部件,而Center本身也是小部件。 因此,您可以通过组合较小的窗口小部件以创建更复杂的窗口小部件(甚至页面,甚至页面层次结构)来构建整个UI。 在面向对象的程序设计中,这称为“继承之上的组成”原理。 相反,例如,在Android开发中,您可以通过扩展类的View类型来创建自定义视图。

Flutter中有两种类型的小部件:

  • StatelessWidget —不可变,表示其属性无法更改,应该是最终的。
  • StatefulWidget-维护状态,该状态在小部件的生存期内可能会改变。 要更改StatefulWidget的状态,应调用setState() 。 然后重新绘制小部件。
7.两种平台都支持各种小部件?

Flutter提供的小部件集非常广泛,尤其是对于Material组件 。 根据我的动手经验,与Android开发相比,在Flutter中使用复杂的组件(如抽屉,底部导航栏或标签栏)要容易得多。 在Flutter的窗口小部件中徘​​徊时,您会遇到非常有趣的窗口小部件,例如UserAccountsDrawerHeader 。 是的,即使这是Flutter提供的即用型UI组件。

对于Cupertino(iOS风格)小部件 ,我不能说相同的广泛性适用于它们。 它们足够涵盖大多数iOS小部件,但不如Material组件那么详细。 当您认为Flutter是Google产品时,这并不奇怪。 但是,我不能说这是一个严重的问题,因为小部件集是如此可定制的,您可以通过使用小部件的参数并将它们中的几乎任何一个放置在其他部件中来获得所需的外观。

8.应用商店中是否有Flutter应用?

根据2018年12月在Flutter Live活动期间分享的最新数据,Google Play商店中有3,000多个Flutter应用程序 ,拥有超过2亿用户

以下视频是关于阿里巴巴拥有5000万用户的咸鱼应用程序的 ,该应用程序使用Flutter来实现一些页面,这些页面在UI中特别需要高性能:

如果您正在寻找更完整的Flutter应用程序,请观看以下视频,该视频与百老汇音乐剧Hamilton的Android和iOS应用程序(使用Flutter开发)有关:

9.那么……为什么要扑扑?

我个人认为,获得Flutter的经验非常有价值。 在某个时候绝对是值得的,尤其是在倒挂金钟开始出现时。 我认为它不会变成Google会抛弃的某种垃圾框架。 但是,让我们更加客观一些,并列出所有使Flutter在您下一个移动应用程序开发框架时值得考虑的要点:

  • 现代API-旨在解决当今应用程序开发领域的常见需求并可以自定义
  • 执行自己的渲染(使用Skia)并使用自己的小部件 -导致UI的可预测性,这意味着所有版本的Android和iOS都共享同一UI
  • 用户界面以60 fps的速度运行 -优于任何其他跨平台框架
  • 将AOT编译为本机代码 —快速,顺畅的应用启动和执行
  • Android和iOS中的代码重用率很高(大多数情况下高于90%)
  • Flutter应用程序的完整编译需要大约25秒才能完成,而该项目大约需要2分钟才能在Android中构建
  • 借助热重载功能, 增量编译耗时不到一秒钟
  • 2倍的资源带宽 –一个团队可以在一个代码库上工作,而不是Android和iOS上的单独团队
  • 开源得到Google的支持
10. Flutter是否仅限于移动世界?

不,不是!虽然不是官方支持的Google产品,但是您可以使用Flutter构建桌面应用。 要了解如何实现这一目标,您可以浏览以下GitHub存储库: Flutter的桌面嵌入

图片信誉

此外,在去年12月(2018年4月4日)举行的Flutter Live活动中,宣布Flutter将具有正式支持的版本或Web开发的补充框架,称为“蜂鸟”

如果您对如何使用所有这些不同的环境支持感到困惑,那么简单的答案就是Flutter并不太依赖平台的资源以及平台的功能。 它只需要平台提供的画布即可使用其自身的功能来完成所有UI的创建和渲染。 这就是使Flutter如此强大和便携的原因。

这就是本文的全部内容……我希望我可以初步了解Flutter是什么以及它的功能。 如果您已经是移动应用程序开发人员,或者想要进入这个领域但正在寻找跨平台的解决方案,我强烈建议您动手做,并开始构建小型应用程序以自行尝试Flutter。 您绝对不会后悔。

资源:

From: https://hackernoon.com/googles-flutter-in-10-questions-answers-928e142ec725

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值