Flutter實(shí)戰(zhàn) 前言

2021-03-06 14:08 更新

本書是第一本系統(tǒng)介紹 Flutter 技術(shù)的中文書籍,它是 Flutter 中文社區(qū)發(fā)起的開源項(xiàng)目之一,旨在幫助開發(fā)者入門,系統(tǒng)地、循序漸進(jìn)的了解 Flutter。

本書官網(wǎng)訪問量較大,由于服務(wù)器配置有限,所以某些時(shí)段訪問本站可能略有延遲,如果延遲較久,讀者可以直接在Github上閱讀本書 (opens new window)。

#緣起

在全球,隨著 Flutter 被越來越多的知名公司應(yīng)用在自己的商業(yè)APP中,F(xiàn)lutter這門新技術(shù)也逐漸進(jìn)入了移動(dòng)開發(fā)者的視野,尤其是當(dāng) Google 在 2018 年 IO 大會(huì)上發(fā)布了第一個(gè) Preview 版本后,國(guó)內(nèi)刮起來一股學(xué)習(xí) Flutter 的熱潮。

在 Flutter 發(fā)布之初,當(dāng)時(shí),我在看完 Flutter 原理介紹后,就對(duì)它產(chǎn)生了濃厚的興趣。當(dāng)時(shí)筆者身邊也一些人比較關(guān)注 Flutter,我也被經(jīng)常問到關(guān)于 Flutter 的一些問題,比如 Flutter 怎么樣?和 RN 有什么區(qū)別?Flutter 為什么要用 Dart?當(dāng)時(shí)也聽到了一些批評(píng)的聲音,比如有些人說 Flutter 只是重復(fù)造輪子,沒啥亮點(diǎn)、Flutter 最大的缺點(diǎn)就是使用了 Dart 語言等。在聽到這些問題及論調(diào)后,我深知這是對(duì) Flutter 的不了解而造成的,這和當(dāng)時(shí)國(guó)內(nèi)缺乏 Flutter 中文文檔和教程有直接關(guān)系,很多人對(duì) Flutter 的了解都只停留在 Google 的發(fā)布會(huì)介紹(有中文翻譯)。

在筆者深入的了解 Flutter 后,深知 Flutter 必將是一個(gè)會(huì)改變移動(dòng)開發(fā)格局的里程碑級(jí)作品,它從設(shè)計(jì)之初就對(duì)性能和開發(fā)效率兼顧,并且借鑒了 React(一個(gè) Web 開發(fā)框架)的響應(yīng)式的 UI 框架設(shè)計(jì)思想等,總之,很難用一兩句話說完 Flutter 的優(yōu)點(diǎn),同時(shí)我也很快成為了 Flutter 的路轉(zhuǎn)粉。

為了更好的幫助中國(guó)開發(fā)者了解這門新技術(shù),我在2018年初開始翻譯Flutter官網(wǎng)文檔,同年4月份上線了Flutter中文網(wǎng) (opens new window),上線后反響很強(qiáng)烈,F(xiàn)lutter 中文網(wǎng)也很快被傳播開,百度搜索排名迅速躥升到前三,截止目前,F(xiàn)lutter 中文官網(wǎng)日 PV 在 7 萬左右,每日獨(dú)立訪問人數(shù)近一萬多。

雖然 Flutter 中文網(wǎng)給中國(guó)開發(fā)者提供了很好的第一手了解 Flutter 的資料,但是筆者還會(huì)經(jīng)常遇到一些對(duì) Flutter 技術(shù)處于圍觀而不愿嘗試的開發(fā)者。這主要是因?yàn)楫?dāng)時(shí) Flutter 在國(guó)內(nèi)沒有成功案例,再加上新技術(shù)都有學(xué)習(xí)成本,所以即使有文檔,也會(huì)有一些開發(fā)者猶豫是否來學(xué)習(xí)。為了解決這部分開發(fā)者的疑慮,我就想如果能用Flutter開發(fā)一個(gè)完整的APP發(fā)布到應(yīng)用商店,這樣開發(fā)者就可以在猶豫的時(shí)候可以先實(shí)際感受一下Flutter應(yīng)用,這樣有個(gè)直觀的了解后,就會(huì)容易做出判斷,為此,我開發(fā)了Gitme (opens new window),它是一個(gè) Github 客戶端,它支持了源碼瀏覽、Issue、Label 等 Github 的大多數(shù)功能,到目前為止,通過 Gitme 登錄過 Github 賬號(hào)的用戶有 8000 多人,日活用戶有 1000 人。更重要的是,有很多人正是用了 Gitme 后,才來學(xué) Flutter 的。

無論是做 Flutter 中文網(wǎng),還是寫 Gitme,主要目標(biāo)都是幫助開發(fā)者學(xué)習(xí) Flutter,同時(shí)消除圍觀開發(fā)者疑慮。但當(dāng)開發(fā)者們真正開始動(dòng)手時(shí),F(xiàn)lutter 的生態(tài)問題就變得尤為突出。由于在 2018 年初 Flutter 剛起步時(shí),很多基礎(chǔ)的包和庫都是空白,少數(shù)已有的一些庫也大都是預(yù)覽版(未到 1.0),存在很多 bug。這個(gè)狀況不是一兩個(gè)人花一兩天能搞定的,這是需要聚整個(gè) Flutter 開發(fā)者社群之力,耗費(fèi)數(shù)年時(shí)間才可能有所改善。因此,在2018年4月份,我以 Flutter 中文網(wǎng)名義發(fā)起了 Flutter 開源計(jì)劃,該計(jì)劃主要是開發(fā)一些常用的包來豐富 Flutter 生態(tài),幫助開發(fā)者提高開發(fā)效率。自在 github 建立 Flutter中文開發(fā)者社區(qū)賬號(hào) (opens new window)以來,前后開源了 dio、cookieJar、flukit 等多個(gè)項(xiàng)目,而 dio 在開源兩周后,就迅速成為 Flutter 第三方包中 Star 排名第一的開源庫。

雖然做的事情已經(jīng)夠多了,但是仍有一些很有必要去做的事情,由于時(shí)間原因,一直被擱置。

隨著學(xué)習(xí) Flutter 的人越來越多,一部分開發(fā)者通過查看官網(wǎng)的文檔就能入門,但也有很多開發(fā)者感覺學(xué)習(xí)時(shí)仍然有些吃力,主要原因有兩個(gè),首先官網(wǎng)的文檔主要是為了引導(dǎo)開發(fā)者快速上手的,講的并不是很細(xì);其次是我們雖然翻譯了官方文檔,但是對(duì)于 Flutter SDK 文檔并沒有翻譯,而在開發(fā)中遇到的一些具體問題通常都得去查看 SDK 文檔。所以,要解決這兩個(gè)問題,必須得有一個(gè)系統(tǒng)化的 Flutter 教程,它不僅可以快速引導(dǎo)開發(fā)者入門,而且也能觸及到一些細(xì)節(jié)和原理,最好也能提供一些學(xué)習(xí)和研究 Flutter 的方法。因此,如果能有一本能系統(tǒng)地介紹 Flutter 的書籍便是便是非常棒的!但是,當(dāng)時(shí)沒有一本關(guān)于 Flutter 的中文書籍,因此,我便計(jì)劃寫一本能由淺入深、系統(tǒng)介紹Flutter的書。2018 年 12 月,《Flutter 實(shí)戰(zhàn)》完成初稿,并在 Github 上開源,同時(shí)上線了《Flutter實(shí)戰(zhàn)》電子書官網(wǎng) (opens new window),至今每天有 3000 多人在線瀏覽本書。那為什么不直接出版?如果直接出版,不僅有稿費(fèi),而且也能保護(hù)知識(shí)產(chǎn)權(quán),而直接開源,不就只能當(dāng)雷鋒了?其實(shí),無論是做中文網(wǎng)、寫 Gitme、做Flutter開源項(xiàng)目,我的出發(fā)點(diǎn)都是為了能幫助中國(guó)開發(fā)者了解、學(xué)習(xí) Flutter,而這是一件非常有意義的事,只要堅(jiān)持做對(duì)別人有價(jià)值的事,那么上帝遲早會(huì)獎(jiǎng)賞你;當(dāng)然我們也在網(wǎng)站中留了打賞的按鈕,如果讀者覺得有幫助,可以掃碼打賞,請(qǐng)筆者喝一杯咖啡。另外由于成書比較倉促,當(dāng)時(shí)書中也有很多錯(cuò)誤,開源后,有很多讀者提PR來糾正書中的錯(cuò)別字,時(shí)至今日,有 78 名開發(fā)者為本書提過 PR,我在此,衷心的感謝你們。

起初,我沒有出版實(shí)體書的打算,當(dāng)時(shí)我以為開發(fā)者直接通過在線訪問本書官網(wǎng)即方便又不用付費(fèi),何樂而不為。但在本書上線后,很多讀者來添加微信好友,表示非常有收益,很期待出版紙質(zhì)書,甚至有比較熱心的讀者想提前付定金預(yù)定!我理解,這是大家對(duì)我所做之事的認(rèn)可和鼓勵(lì)??紤]到,確實(shí)有一部分讀者,尤其是還沒畢業(yè)的同學(xué),可能更喜歡通過書籍去學(xué)習(xí),為此,我已經(jīng)和機(jī)械工業(yè)出版社合作,目前本書紙質(zhì)版正在出版中,敬請(qǐng)關(guān)注。

#本書組織結(jié)構(gòu)

本書采用由淺入深的方式介紹 Flutter 技術(shù)原理,分為三篇,總計(jì) 15 章,各篇的主要內(nèi)容如下。

  • 第一篇,入門篇(第1章~第7章),包括 Flutter 技術(shù)的出現(xiàn)背景和簡(jiǎn)介、Flutter 的各種類型的Widget 以及如何構(gòu)建 UI。通過學(xué)習(xí)本章,讀者可以掌握如何使用 Flutter 來構(gòu)建UI界面。
  • 第二篇,進(jìn)階篇(第 8 章~第 14 章),包括 Flutter 中的事件機(jī)制、動(dòng)畫、自定義組件、文件和網(wǎng)絡(luò)、插件、國(guó)際化以及 Flutter 核心原理等。通過本章內(nèi)容,讀者可以對(duì)Flutter整體構(gòu)建及原理有一個(gè)深入的認(rèn)識(shí)。
  • 第三篇,實(shí)例篇(第 15 章),本章主要通過一個(gè)簡(jiǎn)版的 Github APP 來將前面介紹的內(nèi)容串起來,讓開發(fā)者對(duì)一個(gè)完整的 Flutter APP 開發(fā)流有個(gè)了解。

#本書特色

筆者在大學(xué)時(shí)讀過候捷(真名侯俊杰)寫的一些 C++ 相關(guān)書籍,在他的《深入淺出 MFC》一書中,有一句話我印象像非常深 “唯有深入,方能淺出”。我非常認(rèn)同這句話,對(duì)于一門技術(shù),只有了解的深入,才能用最淺顯、通俗的話語描述出。我在寫作本書時(shí),深入淺出就是一個(gè)主要目標(biāo)。所以,本書的目標(biāo)不僅是想告訴讀者如何使用 Flutter,而且也非常關(guān)注各個(gè)知識(shí)點(diǎn)的底層實(shí)現(xiàn)以及設(shè)計(jì)思想。從本書章節(jié)劃分上來看,入門篇為“淺出”,進(jìn)階篇?jiǎng)t是“深入”。另外由于 PC 客戶端開發(fā)、移動(dòng)開發(fā)、Web 開發(fā)這些經(jīng)驗(yàn)我都有,而 Flutter 本質(zhì)上是一個(gè) UI 系統(tǒng),而 UI 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)在”大前端“下有很多相通之處,所以在本書中的一些知識(shí)點(diǎn)我也會(huì)對(duì)比一些其他 UI 系統(tǒng)(主要是 Android 或Web)相應(yīng)的實(shí)現(xiàn),便于有相關(guān)開發(fā)經(jīng)驗(yàn)的讀者對(duì)比理解。

#本書讀者對(duì)象

  • 讀者至少熟悉一種編程語言。
  • 讀者最好接觸過 PC 客戶端、移動(dòng)開發(fā)或 Web 前端開發(fā)中的一種。
  • 本書不適合做為編程的入門讀物。

#關(guān)于隨書源碼

由于篇幅所限,本書中大多數(shù)示例代碼都只是部分核心代碼,讀者可以去這里 (opens new window)查看下載。

#致謝

感謝一直以來支持 Flutter 中文網(wǎng)、Flutter 開源項(xiàng)目的人以及所有對(duì)本書提過 PR 的人,正是因?yàn)橛心銈?,才有這本書。另外尤其感謝給本書打賞過的同學(xué),你們的支持給了我很大的鼓勵(lì)。

#權(quán)益

最后,知識(shí)是應(yīng)該付費(fèi)的,創(chuàng)作不易,開源不等于免費(fèi),如果您是本書讀者并手頭寬裕,可以點(diǎn)擊下面打賞按鈕打賞;當(dāng)然,如果您囊中羞澀,您也可以閱讀本書,但我對(duì)您有個(gè)小小的要求,希望您在閱讀的過程中能積極參與到本書的糾錯(cuò)以及未完成內(nèi)容的創(chuàng)作上來,也算是有所付出。

近來在網(wǎng)上發(fā)現(xiàn)很多原封不動(dòng)復(fù)制本書的鏡像網(wǎng)站和大量復(fù)制或引用了本書但未注明出處的博客、文章甚至?xí)?;?duì)此,筆者在此聲明,本書著作權(quán)歸 wendux 所有,任何組織或個(gè)人在未經(jīng)授權(quán)的情況下復(fù)制、拷貝、抄襲本書用于商業(yè)目的,筆者保留追究其法律責(zé)任的權(quán)利。如果是非商業(yè)目的的轉(zhuǎn)載和引用,請(qǐng)注明出處并附上本書網(wǎng)址。另外如有出版機(jī)構(gòu)愿意為本書出版實(shí)體書或者想轉(zhuǎn)載本書內(nèi)容,亦或是想合作,請(qǐng)加微信 Demons-du.

#勘誤

由于 Flutter SDK 在不斷更新,本書中的部分內(nèi)容(如類的繼承關(guān)系、參數(shù)等)可能會(huì)和新版本的 Flutter 不一致,讀者以最新的 Flutter SDK 為準(zhǔn)。另外,由于時(shí)間倉促,書中難免有錯(cuò)誤之處,如果您發(fā)現(xiàn)本書中的錯(cuò)誤,歡迎點(diǎn)擊右上角的”編輯按鈕“,提 PR。如果您想一起參與本書創(chuàng)作,可以參考《Flutter實(shí)戰(zhàn)》貢獻(xiàn)指南 (opens new window)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)