中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

flutter線上應用,flutter做的app

Flutter Android端集成排坑 - armeabi 適配 & FlutterBoost

Flutter可以算是當下最火熱的新技術之一,我現(xiàn)在所在團隊也準備將Flutter技術應用到線上工程中。

創(chuàng)新互聯(lián)服務項目包括平泉網(wǎng)站建設、平泉網(wǎng)站制作、平泉網(wǎng)頁制作以及平泉網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,平泉網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到平泉省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

關于混合工程,官方文檔其實寫的已經(jīng)比較清楚了,按著文檔走一般問題不大,

但是有一點值得注意的是,F(xiàn)lutter工程引入的庫的gradle的 buildTypes 要與原工程保持一致,如果不一致需要手工添加。

進入正題,現(xiàn)在Flutter官方默認只提供armeabi-v7a、arm64-v8a、x86和x86-64,其中x86和x86-64是為模擬器準備的。目前我們使用的SDK大部分只使用了armeabi架構,直接使用我們會遇見找不到 libflutter.so,libapp.so 的情況,所以我們需要對FlutterSDK做一定的改造。

首先我們要了解下Flutter編譯產物,因為不同版本產物是不同的,這里我們只針對Flutter 1.9.1-hotfixes來說。除了資源文件之外,F(xiàn)lutter打包會生成兩個非常重要的so庫,他們分別是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK產物而 libapp.so 正是我們編寫的dart文件的產物。默認情況下,這兩個文件都會出現(xiàn)在armeabi-v7a中,因此我們要作出對應的改造。

libflutter.so 位于FlutterSDK中,這里順帶提一句,除了這對不同CPU架構,它還分為Debug版和Release版,它們的區(qū)別在于Debug是為JIT編譯方式打造的,體積較大而Release是為AOT編譯方式打造的,體積很小。對 libflutter.so 的改造,只要將其移動文件路徑即可,運行以下腳本即可,此腳本來自美團分享的Flutter文章。

移動完了 libflutter.so 之后我們打包發(fā)現(xiàn), libapp.so 仍然會出現(xiàn)在armeabi-v7a中,所以第二部我們就是移動 libapp.so 。這個需要更改 flutter.gradle ,我們在 flutter.gradle 的45行可以看到如下定義,它定義了我們的環(huán)境。

在524行我們可以看到,abiValue的取值就是根據(jù)上述定義值。

所以結論很簡單,只要將

private static final String ARCH_ARM32 = "armeabi-v7a";

改為

private static final String ARCH_ARM32 = "armeabi";

就可以完成對與 libflutter.so 的移動。

前期工作我們都做好了,打成aar就非常簡單了

直接使用 flutter build aar --target-platform android-arm

打出來后可以解壓檢查下 libflutter.so,libapp.so 是否都在armeabi文件夾下即可。

說完了armeabi適配問題,這里下說下有關于有關于FlutterBoost的接入。這個東西接入有兩點要注意。

在主app內加上即可,常規(guī)操作,強制統(tǒng)一support包的版本號

注釋flutter.gradle第655行。因為編譯過程中,會去初始化插件項目的buildType下面的debug配置,而插件項目下并未配置debug,導致報錯。

如果發(fā)現(xiàn)文章中有錯誤或者有更好的解決方案歡迎指正留言,當然如果本篇文章幫助你解決了問題,也不要吝嗇你的感謝。謝謝各位。

Flutter上線項目實戰(zhàn)——Vap視頻動畫

透明視頻動畫是目前比較流行的實現(xiàn)動畫的一種, 大廠也相繼開源自己的框架,最終我們選中 騰訊vap ,它支持了Android、IOS、Web,為我們封裝flutter_vap提供了天然的便利,并且它提供了將幀圖片生成帶alpha通道視頻的工具,這簡直太贊了。

VAP(Video Animation Player)是企鵝電競開發(fā),用于播放酷炫動畫的實現(xiàn)方案。

video for youtube

video for qiniu

apk download

github

Flutter移動應用:視圖(PageView,GridView)

主要屬性

//創(chuàng)建一個帶 title 的 item

//通過傳入 length 多少個來創(chuàng)建多少個 item

Flutter真香,我用它寫了個桌面版JSON解析工具

Flutter支持穩(wěn)定的桌面設備開發(fā)已經(jīng)一段時間了,不得不說,F(xiàn)lutter多平臺支持的特性真的很香。我本人并沒有任何桌面開發(fā)的經(jīng)驗,但仍然使用Flutter開發(fā)出了一個桌面版小程序,功能很簡單,就是對輸入的json做格式化處理和轉模型。

話不多說,先來看看實際效果。 項目源碼地址

開發(fā)環(huán)境如下:

Flutter : 2.8.1

Dart : 2.15.1

IDE : VSCode

JSON作為我們日常開發(fā)工作中經(jīng)常要打交道的一種數(shù)據(jù)格式,它共有6種數(shù)據(jù)類型: null , num , string , object , array , bool 。我們勢必對它又愛又恨。愛他因為他作為數(shù)據(jù)處理的一種格式確實非常方便簡潔。但是在我們做Flutter開發(fā)中,又需要接觸到json解析時,就會感覺非常棘手,因為flutter沒有反射,導致json轉模型這塊需要手寫那繁雜的映射關系。就像下面這樣子。

數(shù)據(jù)量少還能接受,一旦量大,那么光手寫這個解析方法都能讓你懷疑人生。更何況手寫還有出錯的可能。好在官方有個工具**json_serializable**可以自動生成這塊轉換代碼,也解決了flutter界json轉模型的空缺。當然,業(yè)界也有專門解析json的網(wǎng)站,可以自動生成dart代碼,使用者在生成后復制進項目中即可,也是非常方便的。

本項目以json解析為切入點,和大家一起來看下flutter是如何開發(fā)桌面應用的。

要讓我們的flutter項目支持桌面設備。我們首先需要修改下flutter的設置。如下,讓我們的項目支持 windows 和 macos 系統(tǒng)。

接下來使用 flutter create 命令創(chuàng)建我們的模版工程。

創(chuàng)建完項目后,我們就可以 run 起來了。

先來看下整體界面,界面四塊,分別為功能模塊、文件選擇模塊、輸入模塊、輸出模塊。

我們在新建一個桌面應用時,默認的模版又一個Appbar,此時應用可以用鼠標拖拽移動,放大縮小,還可以縮到很小。但是,我們一旦去掉這個導航欄,那么窗口就不能用鼠標拖動了,并且我們往往不希望用戶將我們的窗口縮放的很小,這會導致頁面異常,一些重要信息都展示不全。因此這里需要借助第三方組件 bitsdojo_window 。通過 bitsdojo_window ,我們可以實現(xiàn)窗口的定制化,拖動,最小尺寸,最大尺寸,窗口邊框,窗口頂部放大、縮小、關閉的按鈕等。

通過 InkWell 組件,可以捕捉到手勢、鼠標、觸控筆的移動和停留位置

這個功能是鼠標移動后的UI交互界面。要在窗口上顯示一個提示框,可以使用 Overlay 。需要注意的是,由于在 Overlay 上的 text 的根結點不是 Material 風格的組件,因此會出現(xiàn)黃色的下劃線。因此一定要用 Material 包一下 text 。并且你必須給創(chuàng)建的 OverlayEntry 一個位置,否則它將全屏顯示。

讀取說表拖拽的文件一開始想嘗試使用 InkWell 組件,但是這個組件無法識別拖拽中的鼠標,并且也無法從中拿到文件信息。因此放棄。后來從文章《Flutter-2天寫個桌面端APP》中發(fā)現(xiàn)一個可讀取拖拽文件的組件 desktop_drop ,能滿足要求。

使用開源組件 file_picker ,選完圖片后的操作和拖拽選擇圖片后的操作一致。

Textfield 如果要顯示富文本,那么需要自定義 TextEditingController 。并重寫 buildTextSpan 方法。

在做導出功能時遇到下列報錯,保存提示為沒有權限訪問對應目錄下的文件。

通過Apple的開發(fā)文檔找到有關權限問題的說明。其中有個授權私鑰的key為 com.apple.security.files.downloads.read-write ,表示 對用戶的下載文件夾的讀/寫訪問權限 。那么,使用Xcode打開Flutter項目中的mac應用,修改工程目錄下的 DebugProfile.entitlements 文件,向 entitlements 文件中添加 com.apple.security.files.downloads.read-write ,并將值設置為YES,保存后重啟Flutter項目。發(fā)現(xiàn)已經(jīng)可以向下載目錄中讀寫文件了。

當然,這是正常操作。還有個騷操作就是關閉系統(tǒng)的沙盒機制。將 entitlements 文件的 App Sandbox 設置為NO。這樣我們就可以訪問任意路徑了。當然關閉應用的沙盒也就相當于關閉了應用的防護機制,因此這個選項慎用。

原文地址:

網(wǎng)頁名稱:flutter線上應用,flutter做的app
文章URL:http://www.rwnh.cn/article28/dsdjdcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、手機網(wǎng)站建設、定制網(wǎng)站、網(wǎng)站設計公司網(wǎng)站策劃、電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
蒙阴县| 深水埗区| 元朗区| 尤溪县| 屯留县| 育儿| 沙湾县| 金平| 庐江县| 铁岭市| 武穴市| 图木舒克市| 平原县| 大石桥市| 金川县| 台中县| 浏阳市| 临高县| 荃湾区| 从江县| 丁青县| 同仁县| 进贤县| 凭祥市| 曲水县| 县级市| 巨鹿县| 大丰市| 台中县| 台东县| 台南市| 蒙山县| 江陵县| 鄂伦春自治旗| 天峻县| 安义县| 古交市| 保靖县| 清远市| 饶河县| 瓦房店市|