大公司背景

  • Google(开发 维护)

Flutter是一个免费和开放源代码的Google移动用户界面框架,为开发人员提供了一种快速而富有表现力的方式,使其可以在IOS和Android上构建本机应用程序。

  • 阿里巴巴(使用 推广)

FlutterGo由阿里巴巴前端技术团队开发的Flutter 开发者帮助 APP,包含 flutter 常用 140+ 组件的demo 演示与中文文档,是学习Flutter开发的必备手册。

界面amazing

image-20200718121647325

移动用户希望他们的应用程序具有精美的设计,流畅的动画和出色的性能,以交付给开发人员,他们需要比以往更快地创建新功能,而又不影响质量或性能。这就是Google蓬勃发展的原因。

一端开发多端使用

热加载

1_f83czn2qdTPBVOfHEnfulAFlutter是可以热加载(hot reload),即不需要重新compile, SDK自动渲染更新的部分

高性能

Flutter不需要Javascript桥接器,而且速度要快得多。

和 React Native 一样,Flutter 也提供响应式的视图,Flutter 采用不同的方法避免由 JavaScript 桥接器引起的性能问题,即用名为 Dart 的程序语言来编译。Dart是用预编译的方式编译多个平台的原生代码,这允许Flutter直接与平台通信,同时使用Skia图形引擎来完成图形、文本、图像、动画等绘制,拥有自己独立的一套图形系统,不再依赖于原生。而不需要通过执行上下文切换的 JavaScript 桥接器。编译为原生代码也可以加快应用程序的启动时间。虽然比其他框架来说不需要JavaScript桥接器,但是性能相对于native来说还是有差距的,至少现在的preview版本来说内存利用以及CPU的使用上都是赶不上native的。我在做测试的时候发现内存使用率上一致居高不下,但是后来发现应该是热更新造成的,当我想在release模式的时候发现又出现更多问题,具体的看编译内容,推荐看下这篇文章How fast is Flutter? I built a stopwatch app to find out.
总结来说就是说,虽然实用了自己的渲染引擎,但是由于视图的刷新是整个widget刷新(理念就是任何都是widget),而原生方面(仅以iOS为例)刷新的只是label的文案,而不需要重新创建label。优化的方式是单独建立每一个元素内容。由此引出,为啥官方文档建议尽量使用无状态的StatelessWidget,除非有必要在使用StatefulWidget。

使用Dart作为编程语言

Dart是一种面向对象的编程语言,用于编写Flutter的移动应用程序代码,并有助于提高应用程序开发流程的效率和有效性。这是一种舒适的语言,还使用了许多CSS部件。Dart用于*世代垃圾收集*,可帮助为短期对象创建框架。它还有助于通过单个指针碰撞来分配对象,以避免UI颠簸和快门。

减少第三方

使用flutter时,您可以获得完整的IOS体验或Android体验。因此,他们正在减少第三方。

API、Flutter API非常一致

AnimationBuilder,FutureBuilder,StreamBuilder,……一旦了解它们,便没有限制。任何东西都是小部件。一个按钮可以用作屏幕,整个页面可以用作带有动画和变换的按钮。

小部件的可定制工具包

Flutter为Android,IOS和Material Design构建了一组丰富且可自定义的小部件。Flutter与Google的材质设计之间的协作已经呈现并轻松创建了强大的UI体验。这有助于创建本机应用程序可用的平滑,清晰和精致的应用程序体验。