Flutter深刻浅出--(一)Flutter 是何方神圣?

(一)什么是 Flutter

Flutter是谷歌的移动UI框架,能够快速在iOSAndroid上构建高质量的原生用户界面。 Flutter能够与现有的代码一块儿工做。在全世界,Flutter正在被愈来愈多的开发者和组织使用,而且Flutter是彻底免费、开源的。小程序



从官方的的介绍来看能够总结成三点:微信小程序

  1. 跨平台 如今Flutter至少能够跨 4 种平台,甚至支持嵌入式开发。咱们经常使用的有LinuxAndroidIOS,甚至能够在谷歌最新的操做系统上Fuchsia进行运行,通过第三方扩展,甚至能够跑在MacOSWindows上,到目前为止,Flutter算是支持平台最多的框架了,良好的跨平台性,直接带来的好处就是减小开发成本。bash

  2. 原生用户界面: 它是原生的,让咱们的体验更好,性能更好。用官方的话讲就是平滑而天然的滑动效果和平台感知,为您的用户带来全新的体验。微信

  3. 开源免费:Android系统同样,这些都是免费开源的。框架

(二)主流跨平台框架对比

  1. ReactNative 和 Weex:执行效率是硬伤,首页不能用RN已经是共识,并且目前在同一AndroidiOS代码方面尚存在不足。函数

  2. 微信小程序:属于微信内的生态闭环,更适合工具类和小游戏,通常都做为原生APP的延伸入口。工具

  3. Flutter:在渲染技术上,Flutter选择了本身实现GDI,因为有更好的可控性,使用了新的语言Dart,避免了RN的那种经过桥接器与Javascript通信致使效率低下的问题,因此在性能方面比RN更高一筹;有经验的开发者能够打开Android手机开发者选项里面的显示边界布局,发现Flutter的布局是一个总体。说明Flutter的渲染没用使用原生控件进行渲染。布局

技术类型 UI渲染方式 性能 开发效率 动态化 框架表明
H5 + 原生 WebView 渲染 通常 ✔️ Cordova、Ionic
JavaScript + 原生渲染 原生控件渲染 ✔️ RN、Weex
自绘UI + 原生 调用系统API渲染 不支持 Flutter

(三)Flutter 的特色

  1. 快速开发
    毫秒级的热重载,修改后,您的应用界面会当即更新。使用丰富的、彻底可定制的widget在几分钟内构建原生界面。
    性能

  2. 富有表现力和灵活的UI
    使用Flutter内置美丽的Material DesignCupertinowidget、丰富的motion API、平滑而天然的滑动效果和平台感知,为您的用户带来全新体验。优化

  3. 响应式框架
    使用Flutter的响应式框架和一系列基础widget,能够轻松构建您的用户界面。使用功能强大且灵活的API(针对2D、动画、手势、效果等)能够帮助开发者解决艰难的UI挑战。

class CounterState extends State<Counter> {
  int counter = 0;

  void increment() {
    // 告诉Flutter state已经改变, Flutter会调用build(),更新显示
    setState(() {
      counter++;
    });
  }

  Widget build(BuildContext context) {
    // 当 setState 被调用时,这个方法都会从新执行.
    // Flutter 对此方法作了优化,使从新执行变的很快
    // 因此你能够从新构建任何须要更新的东西,而无需分别去修改各个widget
    return new Row(
      children: <Widget>[
        new RaisedButton(
          onPressed: increment,
          child: new Text('Increment'),
        ),
        new Text('Count: $counter'),
      ],
    );
  }
}
复制代码

浏览 widget 目录 ,了解更多关于 响应式框架.

  1. 访问本地功能和SDK并支持插件
    Flutter能够复用JavaSwiftObjC代码,访问AndroidiOS上的原生系统功能。另外经过Flutter插件也能够访问原生系统功能,好比蓝牙、相机、WiFi等等。

  2. 跨平台自绘引擎
    FlutterHybrid AppReact Native这些跨平台技术不一样,Flutter既没用使用WebView,也没有使用各个平台的原生控件,而是自己实现一个统一接口的渲染引擎来绘制UI,这样作能够保证不一样平台UI的一致性。另外采用自绘引擎后,Flutter在布局过程当中不须要像RN那样要在JavaScriptNative之间通讯,能够节省性能开销。Flutter使用Skia做为其2D渲染引擎,SkiaGoogle的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia是跨平台的,并提供了很是友好的API

  3. 采用Dart开发
    Flutter App采用Dart语言来开发。与JavaScript相比,DartJIT(即时编译)模式下,速度与JavaScript基本持平。可是当DartAOT(运行前编译)模式运行时,Dart性能要高于JavaScript

相关文章
相关标签/搜索