Flutter官網(wǎng)點擊訪問
Flutter教程(一)Flutter概覽
Flutter教程(二)Flutter安裝及運行
Flutter如何引用第三方庫并使用
作為2018世界移動大會的內(nèi)容之一蝴韭,Google發(fā)布了Flutter的第一個 beta 版本坏为。Flutter 是 Google 用以幫助開發(fā)者在 iOS 和 Android 兩個平臺開發(fā)高質(zhì)量的原生應用的全新移動 UI 框架。現(xiàn)在就可以去 flutter.io快速上手開發(fā)精美的原生應用。
首先我們要理解什么是跨平臺。
什么是跨平臺?如果你是移動開發(fā)者的話,應該知道 Android 是使用 Java\Kotlin 語言來開發(fā)而 iOS 則是 OC\Swift來開發(fā)。各大科技圈大佬們都在絞盡腦汁的想統(tǒng)一這兩個平臺聊品,無論 Android 還是 iOS 都是移動端,若能統(tǒng)一用一套語言開發(fā)應用那最好不過的几苍。這也正是跨平臺的意思翻屈,簡單的說就是你寫的同一套代碼可以運行在不同的平臺。不僅能夠大大加快開發(fā)的進度妻坝,同時也能減少人力成本的投入伸眶。
Flutter就是在這種理念中誕生出的跨平臺框架。
Flutter 的目標是解決移動開發(fā)中的兩個重要問題:
- 實現(xiàn)原生應用的性能和與平臺的集成
- 提供一個多平臺刽宪,可移植的 UI 工具包來支持高效的應用開發(fā)厘贼。
Flutter與ReactNative的區(qū)別?
一個是 Facebook 推出兩年多的 ReactNative 圣拄,另一個則是 Google 這種頂級科技公司的產(chǎn)品Flutter嘴秸。那么它們有什么區(qū)別呢?
看過ReactNative源碼的朋友都應該知道庇谆,RN中的組件都繼承自Native View組件岳掐。例如:ReactNative 中的 ListView 在 Android 中就是繼承自 ListView ,還有 RecycleView饭耳。
而Flutter則不同串述,它的所有 UI 組件都是一幀一幀畫出來的。這樣能夠很準確并且很靈活的做出你想要的 UI 寞肖。
Flutter 使用 Dart語言開發(fā)而 ReactNative 則使用 JS 結(jié)合 XML 來開發(fā)的纲酗。
估計說道Dart語言,很多朋友都不知道新蟆。其實觅赊,我也是剛剛知道。琼稻。吮螺。
下面就說道說道Dart語言。
基于Dart語言開發(fā)的Flutter框架
dart語言是由谷歌公司開發(fā)的網(wǎng)絡(luò)編程語言,于2011年10月10日發(fā)布规脸。谷歌2010年內(nèi)部備忘錄顯示坯约,Dart的目標就是要代替JavaScript網(wǎng)絡(luò)開發(fā)通用語言的地位熊咽。
然而莫鸭,那么多年過去了。横殴。被因。今天卻以這種方式出現(xiàn)
先來看段代碼
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 開發(fā)在會后梨与,我也主動的去找 Flutter 的開發(fā)專家 Divod 聊了會。我問到他一個問題文狱,我說為什么你們會選擇用 Dart 語言來開發(fā)而不選擇用XML 和 JS 粥鞋,從剛才您的代碼示例上我的第一感覺就是沒有 ReactNative 的可讀性高。大家也許覺得我太大膽瞄崇,在 Google 的場子提 Facebook 的東西呻粹。但技術(shù)畢竟是技術(shù),程序員何苦為難程序員苏研,這是一場技術(shù)的交流等浊。最后,他也給了我一個滿意和無力反駁的答案摹蘑,“因為 Dart 的開發(fā)團隊就在他們旁邊筹燕,他們能給到我們很快的支持。我們能很快溝通到”衅鹿。所以我也就默認了 Flutter 注定會一直使用 Dart 這門語言撒踪。
Flutter的優(yōu)點
- 跨平臺的優(yōu)點不必多說
- Flutter默認Meteria UI,開發(fā)起來賊溜
- hot reload的開發(fā)模式非常方便大渤,基本上做到實時查看改變的UI
- 將來發(fā)布的 Fuchsia OS 就欽定了 Flutter 作為 UI Toolkit
- 從性能上來講糠涛,F(xiàn)lutter是加分的。
Flutter的缺點
- 使用Dart開發(fā)容易造火箭??
- 目前處于beta版本兼犯,商業(yè)化的話還需要再等等忍捡。。切黔。鬼知道什么時候
- 對于IOS UIKit來說砸脊,F(xiàn)lutter Meterial Design還不能取代之,只能作為一種補充。
- 在Android 平臺上纬霞,一個架構(gòu)的SO居然要7M左右凌埂,簡直不能忍。
對于Flutter我還是持樂觀態(tài)度的诗芜,但是就看Google努力否了瞳抓。如果能像Tensorflow或者Golang那樣流行就好了埃疫。想玩的童鞋可以持續(xù)關(guān)注Flutter的動向,如果想要運用到商業(yè)項目上還是等等吧孩哑。