Flutter支持穩(wěn)定的桌面設(shè)備開發(fā)已經(jīng)一段時間了,不得不說,F(xiàn)lutter多平臺支持的特性真的很香。我本人并沒有任何桌面開發(fā)的經(jīng)驗,但仍然使用Flutter開發(fā)出了一個桌面版小程序,功能很簡單,就是對輸入的json做格式化處理和轉(zhuǎn)模型。
創(chuàng)新互聯(lián)公司主營玉屏網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),玉屏h5微信平臺小程序開發(fā)搭建,玉屏網(wǎng)站營銷推廣歡迎玉屏等地區(qū)企業(yè)咨詢
話不多說,先來看看實際效果。 項目源碼地址
開發(fā)環(huán)境如下:
Flutter : 2.8.1
Dart : 2.15.1
IDE : VSCode
JSON作為我們?nèi)粘i_發(fā)工作中經(jīng)常要打交道的一種數(shù)據(jù)格式,它共有6種數(shù)據(jù)類型: null , num , string , object , array , bool 。我們勢必對它又愛又恨。愛他因為他作為數(shù)據(jù)處理的一種格式確實非常方便簡潔。但是在我們做Flutter開發(fā)中,又需要接觸到j(luò)son解析時,就會感覺非常棘手,因為flutter沒有反射,導(dǎo)致json轉(zhuǎn)模型這塊需要手寫那繁雜的映射關(guān)系。就像下面這樣子。
數(shù)據(jù)量少還能接受,一旦量大,那么光手寫這個解析方法都能讓你懷疑人生。更何況手寫還有出錯的可能。好在官方有個工具**json_serializable**可以自動生成這塊轉(zhuǎn)換代碼,也解決了flutter界json轉(zhuǎn)模型的空缺。當(dāng)然,業(yè)界也有專門解析json的網(wǎng)站,可以自動生成dart代碼,使用者在生成后復(fù)制進(jìn)項目中即可,也是非常方便的。
本項目以json解析為切入點,和大家一起來看下flutter是如何開發(fā)桌面應(yīng)用的。
要讓我們的flutter項目支持桌面設(shè)備。我們首先需要修改下flutter的設(shè)置。如下,讓我們的項目支持 windows 和 macos 系統(tǒng)。
接下來使用 flutter create 命令創(chuàng)建我們的模版工程。
創(chuàng)建完項目后,我們就可以 run 起來了。
先來看下整體界面,界面四塊,分別為功能模塊、文件選擇模塊、輸入模塊、輸出模塊。
我們在新建一個桌面應(yīng)用時,默認(rèn)的模版又一個Appbar,此時應(yīng)用可以用鼠標(biāo)拖拽移動,放大縮小,還可以縮到很小。但是,我們一旦去掉這個導(dǎo)航欄,那么窗口就不能用鼠標(biāo)拖動了,并且我們往往不希望用戶將我們的窗口縮放的很小,這會導(dǎo)致頁面異常,一些重要信息都展示不全。因此這里需要借助第三方組件 bitsdojo_window 。通過 bitsdojo_window ,我們可以實現(xiàn)窗口的定制化,拖動,最小尺寸,最大尺寸,窗口邊框,窗口頂部放大、縮小、關(guān)閉的按鈕等。
通過 InkWell 組件,可以捕捉到手勢、鼠標(biāo)、觸控筆的移動和停留位置
這個功能是鼠標(biāo)移動后的UI交互界面。要在窗口上顯示一個提示框,可以使用 Overlay 。需要注意的是,由于在 Overlay 上的 text 的根結(jié)點不是 Material 風(fēng)格的組件,因此會出現(xiàn)黃色的下劃線。因此一定要用 Material 包一下 text 。并且你必須給創(chuàng)建的 OverlayEntry 一個位置,否則它將全屏顯示。
讀取說表拖拽的文件一開始想嘗試使用 InkWell 組件,但是這個組件無法識別拖拽中的鼠標(biāo),并且也無法從中拿到文件信息。因此放棄。后來從文章《Flutter-2天寫個桌面端APP》中發(fā)現(xiàn)一個可讀取拖拽文件的組件 desktop_drop ,能滿足要求。
使用開源組件 file_picker ,選完圖片后的操作和拖拽選擇圖片后的操作一致。
Textfield 如果要顯示富文本,那么需要自定義 TextEditingController 。并重寫 buildTextSpan 方法。
在做導(dǎo)出功能時遇到下列報錯,保存提示為沒有權(quán)限訪問對應(yīng)目錄下的文件。
通過Apple的開發(fā)文檔找到有關(guān)權(quán)限問題的說明。其中有個授權(quán)私鑰的key為 com.apple.security.files.downloads.read-write ,表示 對用戶的下載文件夾的讀/寫訪問權(quán)限 。那么,使用Xcode打開Flutter項目中的mac應(yīng)用,修改工程目錄下的 DebugProfile.entitlements 文件,向 entitlements 文件中添加 com.apple.security.files.downloads.read-write ,并將值設(shè)置為YES,保存后重啟Flutter項目。發(fā)現(xiàn)已經(jīng)可以向下載目錄中讀寫文件了。
當(dāng)然,這是正常操作。還有個騷操作就是關(guān)閉系統(tǒng)的沙盒機(jī)制。將 entitlements 文件的 App Sandbox 設(shè)置為NO。這樣我們就可以訪問任意路徑了。當(dāng)然關(guān)閉應(yīng)用的沙盒也就相當(dāng)于關(guān)閉了應(yīng)用的防護(hù)機(jī)制,因此這個選項慎用。
原文地址:
近來閑暇時間一直在做Flutter,閃屏頁是一個比較常見的需求,網(wǎng)上的閃屏頁教程大部分是那種類似于廣告頁,而非iOS中的 LaunchScreen 性質(zhì)的閃屏頁.按照原來的方案我們要配置閃屏頁的話,我們需要同時配置兩端的閃屏頁,那么有沒有比較簡單的方案來配置閃屏頁呢? 毋庸置疑,當(dāng)然是有了,那就是Flutter的插件 - flutter_native_splash . 接下來我們就來看一下具體應(yīng)該怎么使用這個插件.
首先把 flutter_native_splash 導(dǎo)入到工程的 pubspec.yaml 中.這里需要注意的是需要放在 dev_dependencies 下,而不是 dependencies .具體如下所示.
接下來我們就來配置 flutter_native_splash ,在配置之前我們看一下 flutter_native_splash 的可配置項.
例如,我現(xiàn)在只有一個logo圖片,那么我想生成iOS和android兩端的閃屏頁,這時候我只需在 pubspec.yaml 如下設(shè)置即可.
當(dāng)然了,如果你有其他配置可以自行進(jìn)行添加.
配置完成了,我們該如何生成呢?這時候需要我們打開終端 cd 到我們的工程目錄下.如果是Android Studio 或者 VSCode 默認(rèn)就是在當(dāng)前工程目錄下.
然后我們需要執(zhí)行下面的三個命令來生成閃屏頁
每一次都敲三個命令實屬麻煩,我們把上訴的三個命令整合成一個命令,如下所示.
那么,我們不想使用該插件生成的閃屏頁該怎么辦呢?我們只需要執(zhí)行下面命令即可.
注:每一次更換圖片都是需要重新執(zhí)行命令重新生成.
OK,上面就是關(guān)于 flutter_native_splash 的使用全部內(nèi)容,其實比較簡單,如果需要定制化的,建議還是各自平臺配置各自的閃屏頁.如果有任何問題歡迎在評論區(qū)批評指導(dǎo),感謝大家了.
如果和我一樣,用慣了VS Code來開發(fā)項目的話,那就跟我一起來配置一下如何在VS Code里運行flutter項目。
1.在VS Code里安裝擴(kuò)展:
2.在VScode上打開打開終端,快捷鍵:Ctrl+~(Tab上一個鍵),在終端上輸入:flutter create flutter_app02,即可創(chuàng)建完成!
也可以把之前的項目放到工作區(qū)
3.在終端中運行命令:flutter run
運行的時候你會發(fā)現(xiàn)手機(jī)提示你安裝個app,點擊安裝完成,項目就在手機(jī)上顯示了,下圖是運行成功的提示。
下圖是手機(jī)效果:
如果報錯的話,運行下清緩存的命令:flutter clean,把文件夾.gradle刪掉,然后flutter run重新跑下項目。
Flutter項目可以用三種方式開發(fā):
可以根據(jù)自己的需求選擇,由于之前一直做iOS開發(fā),也做過RN項目開發(fā),Mac上裝過Android Studio 和 其他安卓模擬器 Genymotion ,所以我選擇Android Studio開發(fā)工具,之前裝的版本 3.0.1 比較老了,所以進(jìn)行了升級 3.4 。
體驗Flutter
PS:第一次創(chuàng)建項目可以成功,之后再執(zhí)行這一步操作創(chuàng)建新的Flutter項目時,一直卡住,重啟過很多次Android Studio一直都是這樣,后面查詢資料,發(fā)現(xiàn)自己沒有同意使用 android-licenses ,可以通過下列命令驗證,第一步,先驗證:
第一步檢測結(jié)果,發(fā)現(xiàn)是需要同意 android-licenses :
第二步執(zhí)行同意命令,操作時會有很多個 android-licenses 需要同意:
第二步檢測結(jié)果:
第三步再次驗證,當(dāng)?shù)玫揭韵陆貓D中結(jié)果時,代表所有環(huán)境配置已經(jīng)完成:
上述命令創(chuàng)建一個Flutter項目,項目名為 myapp ,在項目目錄中,有安卓和iOS兩個項目目錄。
Android Studio中會列出所有已經(jīng)連接了電腦的設(shè)備,包括安卓和iPhone。如果想在模擬器上運行,下面可以選擇對應(yīng)的模擬器,如圖:
PS:如果想在模擬器上運行,需要先安裝一個模擬器,選擇Tools AVD Manager,如圖:
然后選擇Create Virtual Device,根據(jù)提示一步一步操作即可(建議翻墻條件下操作),添加完成后就可以在這個界面看到自己已經(jīng)添加的模擬器,點擊綠色的運行按鈕,即可打開該模擬器: