作为2018世界移动大会的内容之一,Google发布了Flutter的第一个 beta 版本。Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量的原生应用的全新移动 UI 框架。现在就可以去 flutter.io快速上手开发精美的原生应用。
首先我们要理解什么是跨平台。
什么是跨平台?如果你是移动开发者的话,应该知道 Android 是使用 Java\Kotlin 语言来开发而 iOS 则是 OC\Swift来开发。各大科技圈大佬们都在绞尽脑汁的想统一这两个平台,无论 Android 还是 iOS 都是移动端,若能统一用一套语言开发应用那最好不过的。这也正是跨平台的意思,简单的说就是你写的同一套代码可以运行在不同的平台。不仅能够大大加快开发的进度,同时也能减少人力成本的投入。
Flutter就是在这种理念中诞生出的跨平台框架。
Flutter 的目标是解决移动开发中的两个重要问题:
1. 实现原生应用的性能和与平台的集成
2. 提供一个多平台,可移植的 UI 工具包来支持高效的应用开发。
Flutter与ReactNative的区别?
一个是 Facebook 推出两年多的 ReactNative ,另一个则是 Google 这种顶级科技公司的产品Flutter。那么它们有什么区别呢?
看过ReactNative源码的朋友都应该知道,RN中的组件都继承自Native View组件。例如:ReactNative 中的 ListView 在 Android 中就是继承自 ListView ,还有 RecycleView。
而Flutter则不同,它的所有 UI 组件都是一帧一帧画出来的。这样能够很准确并且很灵活的做出你想要的 UI 。
Flutter 使用 Dart语言开发而 ReactNative 则使用 JS 结合 XML 来开发的。
估计说道Dart语言,很多朋友都不知道。其实,我也是刚刚知道。。。
下面就说道说道Dart语言。
基于Dart语言开发的Flutter框架
dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。谷歌2010年内部备忘录显示,Dart的目标就是要代替JavaScript网络开发通用语言的地位。
然而,那么多年过去了。。。今天却以这种方式出现
先来看段代码
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'You have pushed the button this many times:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
new Image.network(
'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
)
],
),
),
persistentFooterButtons: <Widget>[new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
) ]
,
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
是不是还在各种括号和嵌套中魂牵梦绕呢?
直观感受就是没有RN写起来那么简洁明了。
在知乎上看到的一个真实的段子
为什么Flutter 用 Dart 开发在会后,我也主动的去找 Flutter 的开发专家 Divod 聊了会。我问到他一个问题,我说为什么你们会选择用 Dart 语言来开发而不选择用XML 和 JS ,从刚才您的代码示例上我的第一感觉就是没有 ReactNative 的可读性高。大家也许觉得我太大胆,在 Google 的场子提 Facebook 的东西。但技术毕竟是技术,程序员何苦为难程序员,这是一场技术的交流。最后,他也给了我一个满意和无力反驳的答案,“因为 Dart 的开发团队就在他们旁边,他们能给到我们很快的支持。我们能很快沟通到”。所以我也就默认了 Flutter 注定会一直使用 Dart 这门语言。
Flutter的优点
- 跨平台的优点不必多说
- Flutter默认Meteria UI,开发起来贼溜
- hot reload的开发模式非常方便,基本上做到实时查看改变的UI
- 将来发布的 Fuchsia OS 就钦定了 Flutter 作为 UI Toolkit
- 从性能上来讲,Flutter是加分的。
Flutter的缺点
- 使用Dart开发容易造火箭
- 目前处于beta版本,商业化的话还需要再等等。。。鬼知道什么时候
- 对于IOS UIKit来说,Flutter Meterial Design还不能取代之,只能作为一种补充。
- 在Android 平台上,一个架构的SO居然要7M左右,简直不能忍。
对于Flutter我还是持乐观态度的,但是就看Google努力否了。如果能像Tensorflow或者Golang那样流行就好了。想玩的童鞋可以持续关注Flutter的动向,如果想要运用到商业项目上还是等等吧。