https://pan.baidu.com/s/1g3qObbP4Idb8QrStYeWOvA 提取碼:6icf
https://share.weiyun.com/mDuF95rR 密碼:c7r3ec
本文結(jié)合了最新版的Flutter、Dart、主流插件技術(shù)進(jìn)行企業(yè)級項(xiàng)目開發(fā),并融入了大量Flutter版本更新問題的解決方案,以及與H5混合開發(fā)和通信、多屏適配等高頻技能,文中還將作者近幾年在一線開發(fā)中積累的大量開發(fā)、避坑等經(jīng)驗(yàn)傳授給大家,讓各位小伙伴在實(shí)際開發(fā)中能更好的運(yùn)用Flutter技術(shù)。
一、那么,首先我們先來認(rèn)識Flutter,到底什么是Flutter?
Flutter是一種由谷歌開發(fā)的開源用戶界面(UI)工具包,用于在多個平臺上構(gòu)建高性能、美觀和流暢的移動應(yīng)用程序。它使用Dart編程語言,并提供豐富的UI組件和工具,可以快速構(gòu)建現(xiàn)代化的應(yīng)用程序界面。
二、Flutter的特點(diǎn)和優(yōu)勢
1、跨平臺開發(fā):Flutter允許開發(fā)人員使用單個代碼庫構(gòu)建應(yīng)用程序,可在多個平臺上運(yùn)行,包括iOS、Android、Web和桌面操作系統(tǒng)。這簡化了跨平臺開發(fā)的流程,減少了開發(fā)成本和工作量。
2、響應(yīng)式UI:Flutter采用響應(yīng)式編程模型,允許開發(fā)人員根據(jù)數(shù)據(jù)的變化自動更新UI。這意味著UI可以根據(jù)應(yīng)用程序狀態(tài)的變化實(shí)時更新,提供流暢的用戶體驗(yàn)
3、熱重載(Hot Reload):Flutter的熱重載功能允許開發(fā)人員在應(yīng)用程序運(yùn)行時快速查看和調(diào)試代碼更改。開發(fā)人員可以實(shí)時看到UI的變化,加快了開發(fā)周期,提高了開發(fā)效率。
4、自繪引擎:Flutter使用Skia圖形引擎進(jìn)行渲染,這意味著應(yīng)用程序的每個像素都可以通過Flutter進(jìn)行繪制。這樣可以實(shí)現(xiàn)高度自定義的UI設(shè)計(jì)和動畫效果,并提供卓越的性能。
5、豐富的UI組件:Flutter提供了一套豐富而強(qiáng)大的UI組件,可以用于構(gòu)建漂亮和現(xiàn)代化的用戶界面。這些組件具有高度的可定制性,使開發(fā)人員能夠創(chuàng)建獨(dú)特的應(yīng)用程序界面。
6、開發(fā)效率:Flutter的熱重載、響應(yīng)式UI和豐富的UI組件使開發(fā)人員能夠更快速地開發(fā)應(yīng)用程序。單個代碼庫的使用也簡化了代碼維護(hù)和版本控制的過程。
7、社區(qū)支持和生態(tài)系統(tǒng):Flutter擁有龐大的開發(fā)者社區(qū)和活躍的生態(tài)系統(tǒng)。開發(fā)人員可以從社區(qū)中獲取大量的資源、插件和解決方案,加快開發(fā)進(jìn)程,并且可以與其他開發(fā)者進(jìn)行交流和合作。
8、良好的性能:由于Flutter使用自繪引擎和硬件加速,應(yīng)用程序可以實(shí)現(xiàn)卓越的性能。Flutter應(yīng)用程序通常具有快速的響應(yīng)時間、流暢的動畫效果和較低的內(nèi)存占用。
三、Windows 與 Flutter
數(shù)年前,我們提出了一個雄心勃勃的愿景,要將 Flutter 從 iOS 和 Android 移動應(yīng)用領(lǐng)域擴(kuò)展到更多平臺,包括 web 端和桌面端。
Flutter 可以在平臺間通用的內(nèi)容很多: 從可移植、硬件加速的 Skia 圖像處理引擎,到 Flutter 渲染系統(tǒng),核心原語 (如動畫、主題、文本輸入和多語言任務(wù)),以及 Flutter 包含的數(shù)百個 widget。
然而,桌面應(yīng)用并不只是運(yùn)行在更大屏幕上的移動應(yīng)用。它們是專門針對鍵盤和鼠標(biāo)等輸入設(shè)備進(jìn)行設(shè)計(jì)的。它們的窗口大小可調(diào),且通常在寬屏顯示器上運(yùn)行。輔助功能、輸入法編輯器和視覺樣式等關(guān)鍵領(lǐng)域的習(xí)慣也與移動應(yīng)用有所不同。桌面應(yīng)用還與底層操作系統(tǒng)中的各種 API 集成: 從文件系統(tǒng)選擇器到設(shè)備硬件,再到數(shù)據(jù)存儲 (如 Windows 注冊表),等等不一而足。
因此,我們在將 Flutter 引入 Windows 的同時,也針對 Windows 進(jìn)行了定制。
Flutter 的 Windows 實(shí)現(xiàn)結(jié)合了 Dart 框架和 C++ 引擎,與我們對 Android 和 iOS 提供的支持一致。Windows 和 Flutter 通過包含 Flutter 引擎的嵌入層進(jìn)行通信,該嵌入層負(fù)責(zé)翻譯和調(diào)度 Windows 消息。Flutter 與 Windows 相互協(xié)調(diào),完成界面在屏幕上的繪制,處理窗口大小調(diào)整及 DPI 變更等事件,并使用 Windows 現(xiàn)有的方式處理多語言任務(wù) (例如輸入法編輯器)。
四、在開發(fā)中,F(xiàn)lutter 應(yīng)用會在一個 VM(程序虛擬機(jī))中運(yùn)行,從而可以在保留狀態(tài)且無需重新編譯的情況下,熱重載相關(guān)的更新。對于發(fā)行版 (release) ,F(xiàn)lutter 應(yīng)用程序會直接編譯為機(jī)器代碼(Intel x64 或 ARM 指令集),或者針對 Web 平臺的 JavaScript。 Flutter 的框架代碼是開源的,遵循 BSD 開源協(xié)議,并擁有蓬勃發(fā)展的第三方庫生態(tài)來補(bǔ)充核心庫功能。
概覽分為以下幾部分內(nèi)容:
分層模型:Flutter 的構(gòu)成要素。
響應(yīng)式用戶界面:Flutter 用戶界面開發(fā)的核心概念。
widgets 介紹:構(gòu)建 Flutter 用戶界面的基石。
渲染過程:Flutter 如何將界面布局轉(zhuǎn)化為像素。
平臺嵌入層 的概覽:讓 Flutter 應(yīng)用可以在移動端及桌面端操作系統(tǒng)執(zhí)行的代碼。
將 Flutter 與其他代碼進(jìn)行集成:Flutter 應(yīng)用可用的各項(xiàng)技術(shù)的更多信息。
Web 支持:Flutter 在瀏覽器環(huán)境中的特性的概述。
五、如何創(chuàng)建自己的自定義原生集成插件?
如果有 Flutter 官方或社區(qū)第三方插件沒有涵蓋的平臺特定的功能,你可以參考 開發(fā)包和插件 文檔創(chuàng)建自己的插件。
Flutter 的插件架構(gòu),簡而言之,和 Android 中的事件總線的使用非常相似:你發(fā)送一個消息,并讓接受者處理并返回一個結(jié)果給你。在這種情況下,接受者是運(yùn)行在 Android 或 iOS 原生端的代碼。
六、如何在 Flutter 應(yīng)用中使用 NDK?
如果你在現(xiàn)有的 Android 應(yīng)用中使用 NDK,并且希望你的 Flutter 應(yīng)用可以利用你的 native 庫,你可以通過創(chuàng)建一個自定義插件實(shí)現(xiàn)。
你的自定義插件首先和你的 Android 應(yīng)用通信,Android 應(yīng)用會通過 JNI 調(diào)用 native 方法。一旦有返回值,就可以向 Flutter 發(fā)送回一個消息并渲染結(jié)果。
暫時還不支持從 Flutter 中直接調(diào)用 native 代碼。