Flutter
是谷歌的移动UI
框架,能够快速在iOS
和Android
上构建高质量的原生用户界面。Flutter
能够与现有的代码一块儿工做。在全世界,Flutter
正在被愈来愈多的开发者和组织使用,而且Flutter
是彻底免费、开源的。小程序
从官方的的介绍来看能够总结成三点:微信小程序
跨平台 如今Flutter
至少能够跨 4 种平台,甚至支持嵌入式开发。咱们经常使用的有Linux
、Android
、IOS
,甚至能够在谷歌最新的操做系统上Fuchsia
进行运行,通过第三方扩展,甚至能够跑在MacOS
和Windows
上,到目前为止,Flutter
算是支持平台最多的框架了,良好的跨平台性,直接带来的好处就是减小开发成本。bash
原生用户界面: 它是原生的,让咱们的体验更好,性能更好。用官方的话讲就是平滑而天然的滑动效果和平台感知,为您的用户带来全新的体验。微信
开源免费:同Android
系统同样,这些都是免费开源的。框架
ReactNative 和 Weex:执行效率是硬伤,首页不能用RN
已经是共识,并且目前在同一Android
和iOS
代码方面尚存在不足。函数
微信小程序:属于微信内的生态闭环,更适合工具类和小游戏,通常都做为原生APP
的延伸入口。工具
Flutter:在渲染技术上,Flutter
选择了本身实现GDI
,因为有更好的可控性,使用了新的语言Dart
,避免了RN
的那种经过桥接器与Javascript
通信致使效率低下的问题,因此在性能方面比RN
更高一筹;有经验的开发者能够打开Android
手机开发者选项里面的显示边界布局,发现Flutter
的布局是一个总体。说明Flutter
的渲染没用使用原生控件进行渲染。布局
技术类型 | UI渲染方式 | 性能 | 开发效率 | 动态化 | 框架表明 |
---|---|---|---|---|---|
H5 + 原生 | WebView 渲染 | 通常 | 高 | ✔️ | Cordova、Ionic |
JavaScript + 原生渲染 | 原生控件渲染 | 好 | 高 | ✔️ | RN、Weex |
自绘UI + 原生 | 调用系统API渲染 | 好 | 高 | 不支持 | Flutter |
快速开发
毫秒级的热重载,修改后,您的应用界面会当即更新。使用丰富的、彻底可定制的widget
在几分钟内构建原生界面。
性能
富有表现力和灵活的UI
使用Flutter
内置美丽的Material Design
和Cupertino
的widget
、丰富的motion API
、平滑而天然的滑动效果和平台感知,为您的用户带来全新体验。优化
响应式框架
使用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'),
],
);
}
}
复制代码
访问本地功能和SDK并支持插件
Flutter
能够复用Java
、Swift
或ObjC
代码,访问Android
和iOS
上的原生系统功能。另外经过Flutter
插件也能够访问原生系统功能,好比蓝牙、相机、WiFi
等等。
跨平台自绘引擎
Flutter
与Hybrid App
、React Native
这些跨平台技术不一样,Flutter
既没用使用WebView
,也没有使用各个平台的原生控件,而是自己实现一个统一接口的渲染引擎来绘制UI
,这样作能够保证不一样平台UI
的一致性。另外采用自绘引擎后,Flutter
在布局过程当中不须要像RN
那样要在JavaScript
和Native
之间通讯,能够节省性能开销。Flutter
使用Skia
做为其2D渲染引擎,Skia
是Google
的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia
是跨平台的,并提供了很是友好的API
。
采用Dart开发
Flutter App
采用Dart
语言来开发。与JavaScript
相比,Dart
在JIT
(即时编译)模式下,速度与JavaScript
基本持平。可是当Dart
以 AOT
(运行前编译)模式运行时,Dart
性能要高于JavaScript
。