Android開發(fā)者的Flutter入門學習

序言

Flutter 出來已經(jīng)有些日子了买决,越來越多的開發(fā)者也開始嘗試使用 Flutter 進行開發(fā),F(xiàn)lutter 是谷歌的移動UI框架引镊,基于 Dart 語言胸嘁,支持多端開發(fā)(Android、iOS凹蜂、Web)馍驯,聽到這里是不是想要躍躍欲試了阁危,由于LZ也正在踩坑的路上,所以有寫的不對的地方還請多多指教汰瘫。

官網(wǎng)

任何一門語言狂打,官網(wǎng)都是最好的學習渠道,雖然說大多數(shù)都是英文的混弥,但現(xiàn)在谷歌已經(jīng)有很多都支持中文版本了:

Flutter 中文官網(wǎng)

安裝

安裝直接按照官網(wǎng)的來就行了趴乡,最主要的就是配置一下環(huán)境變量,下載下來的 flutter 包你可以理解為 java 中的 jar 包蝗拿,開發(fā)的時候需要導入的晾捏。

特性

1、widget(相當于Android中的View)

我們都知道哀托,在 Android 中頁面是由很多個View來構成的惦辛,在 Flutter 中,Widget 用來構成頁面上的內(nèi)容仓手,但是和 View 不同的是胖齐,Widget 是不可變的,有些人可能就有疑問了嗽冒,不可變那豈不是靜態(tài)頁面呀伙,非也非也,那肯定有其他辦法的咯添坊,接著往下看:

1.1剿另、不可變狀態(tài)的小部件StatelessWidget

你可以將 StatelessWidget 理解成 Android 中的 ViewGroup,這是一個無狀態(tài)的小部件贬蛙,什么意思呢驰弄,就是當你的頁面部分不依賴于對象配置信息外的其他任何內(nèi)容時,簡而言之就是你的頁面是靜態(tài)頁面時速客,就可以使用它戚篙。

1.2、可變狀態(tài)的小部件StatefulWidget

和 StatelessWidget 一樣可以理解為 ViewGroup溺职,但是它是有狀態(tài)的岔擂,這個狀態(tài)類似于 Activity 的生命周期,當你的頁面需要動態(tài)的改變時浪耘,你就需要使用它乱灵。

注意

如果一個 Widget 發(fā)生了變化(用戶與之交互),那么它就是有狀態(tài)的七冲;如果一個子 Widget 是有狀態(tài)的痛倚,那么包裹它的父 Widget 可以是有狀態(tài)的也可以是無狀態(tài)的,簡而言之澜躺,StatelessWidget 中可以包含 StatefulWidget蝉稳,而 StatefulWidget 中也可以包含 StatelessWidget抒蚜。

2、Android中的四大組件還有與之對應的嗎

除了頁面之外耘戚,其他的肯定都沒有嗡髓,因為畢竟是跨端開發(fā)的框架,不是專門為 Android 而設計的收津,可能有些人要問了饿这,那如果想實現(xiàn) Android 中的一些特殊的功能豈不是做不了了,非也非也撞秋,這個就屬于另外一個知識了长捧,賣個關子先,接著往下看吻贿;Activity 和 Fragment 在 Flutter 中都變成了 Widget唆姐。

3、資源文件

3.1廓八、資源圖片

在Android中資源圖片有很多種分辨率,F(xiàn)lutter 遵循像iOS這樣簡單的3種分辨率格式: 1x, 2x, and 3x赵抢,在根目錄下創(chuàng)建一個 images 的文件夾剧蹂,然后再在 images 文件夾中創(chuàng)建三個文件夾用來存放不同分辨率的圖片:

  • ../icon.png
  • ../2.0x/icon.png
  • ../3.0x/icon.png

然后,你需要在 pubspec.yaml 中配置這些圖片烦却,這個文件相當于Android中的 gradle文件宠叼。

3.2、字符串

在 Flutter 中其爵,目前最好的做法就是新建一個類冒冬,用來聲明你所需要的字符串

聲明:
class Strings{
  static String welcomeMessage = "Welcome To Flutter";
}

使用:
new Text(Strings.welcomeMessage);

4、生命周期

在 Flutter 中摩渺,StatelessWidget 是沒有生命周期的简烤,只有 StatefulWidget 才有,我們一般通過掛接到WidgetsBinding觀察并監(jiān)聽didChangeAppLifecycleState更改事件來監(jiān)聽生命周期事件摇幻,有以下這些生命周期:

  • resumed - 應用程序可見并響應用戶輸入横侦。這是來自Android的onResume
  • inactive - 應用程序處于非活動狀態(tài),并且未接收用戶輸入绰姻。此事件在Android上未使用枉侧,僅適用于iOS
  • paused - 應用程序當前對用戶不可見,不響應用戶輸入狂芋,并在后臺運行榨馁。這是來自Android的onPause
  • suspending - 該應用程序?qū)簳r中止。這在iOS上未使用

5帜矾、異步UI

Dart是單線程執(zhí)行模型翼虫,支持Isolates(在另一個線程上運行Dart代碼的方式)屑柔、事件循環(huán)和異步編程。 除非您啟動一個Isolate蛙讥,否則您的Dart代碼將在主UI線程中運行锯蛀,并由事件循環(huán)驅(qū)動。

當你進行網(wǎng)絡請求時次慢,可以在UI線程直接運行網(wǎng)絡請求代碼:

loadData() async {
  String dataURL = "https://jsonplaceholder.typicode.com/posts";
  http.Response response = await http.get(dataURL);
  setState(() {
    widgets = JSON.decode(response.body);
  });
}

這里使用了 async/await 語法來調(diào)用API旁涤,你可以理解為,使用 async 之后這個方法就變成了異步的方法迫像,然后需要等待(await)網(wǎng)絡請求完成之后再執(zhí)行下面更新語句劈愚;在 StatefulWidget 中,我們使用 setState 方法來更新UI操作闻妓,這會重新執(zhí)行 build 方法菌羽。

6、組件

在 Flutter 中由缆,有很多組件注祖,他們可以構建成頁面,因為組件繁多均唉,所以這里我就不一一介紹了是晨,我會在接下來的博客中為大家一一介紹 Flutter 中各種組件的使用方法,也歡迎大家持續(xù)關注后續(xù)博客舔箭。

最后

提醒一下大家,如果開發(fā)過程中有大的修改時层扶,還是不要相信 Flutter 的熱重載箫章,在看到運行情況與實際不符時,卸載重裝再來一遍镜会。最后的最后檬寂,上一張LZ花了一天半時間入門的Demo:

地址:Flutter解析Demo

image
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市戳表,隨后出現(xiàn)的幾起案子焰薄,更是在濱河造成了極大的恐慌,老刑警劉巖扒袖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塞茅,死亡現(xiàn)場離奇詭異,居然都是意外死亡季率,警方通過查閱死者的電腦和手機野瘦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鞭光,你說我怎么就攤上這事吏廉。” “怎么了惰许?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵席覆,是天一觀的道長。 經(jīng)常有香客問我汹买,道長佩伤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任晦毙,我火速辦了婚禮生巡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘见妒。我一直安慰自己孤荣,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布须揣。 她就那樣靜靜地躺著盐股,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耻卡。 梳的紋絲不亂的頭發(fā)上疯汁,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音劲赠,去河邊找鬼。 笑死秸谢,一個胖子當著我的面吹牛凛澎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播估蹄,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塑煎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了臭蚁?” 一聲冷哼從身側(cè)響起最铁,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垮兑,沒想到半個月后冷尉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡系枪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年雀哨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雾棺,死狀恐怖膊夹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捌浩,我是刑警寧澤放刨,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站尸饺,受9級特大地震影響进统,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侵佃,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一麻昼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧馋辈,春花似錦抚芦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至答毫,卻和暖如春褥民,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洗搂。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工消返, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耘拇。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓撵颊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惫叛。 傳聞我的和親對象是個殘疾皇子倡勇,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354