欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter能用js,簡書 flutter

九、Flutter之webview

Flutter的webview常用的第三方庫有 flutter_webview_plugin 、 webview_flutter ,后者的文檔較少,暫先學(xué)習(xí)flutter_webview_plugin。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),休寧縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:休寧縣等地區(qū)。休寧縣做網(wǎng)站價(jià)格咨詢:13518219792

添加依賴

導(dǎo)入包

iOS端info.plist配置,其中NSAppTransportSecurity節(jié)點(diǎn)是為了支持http協(xié)議

一個(gè)簡單的demo

要監(jiān)聽鏈接跳轉(zhuǎn)的話,實(shí)現(xiàn)onUrlChanged即可

添加依賴

導(dǎo)入包

iOS端info.plist配置

一個(gè)簡單的demo

但是在webview里點(diǎn)擊鏈接跳轉(zhuǎn)的時(shí)候,測試機(jī)有時(shí)會(huì)跳轉(zhuǎn)到系統(tǒng)瀏覽器上,并且點(diǎn)擊文本框無法彈出鍵盤,交互性很弱。

二者共同的缺點(diǎn)是與javascript難以交互,目前只能實(shí)現(xiàn)Flutter-JS傳遞信息,還沒找到可以進(jìn)行完美交互的第三方庫。并且一些常見的協(xié)議還不支持,比如撥號(hào)和調(diào)用攝像頭等,期待后續(xù)完善。

學(xué)js還是直接flutter

js先學(xué)在學(xué)Flutter

Flutter是谷歌的移動(dòng)UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開源的。

Flutter組件采用現(xiàn)代響應(yīng)式框架構(gòu)建,這是從React中獲得的靈感,中心思想是用組件(widget)構(gòu)建你的UI。組件描述了在給定其當(dāng)前配置和狀態(tài)時(shí)他們顯示的樣子。當(dāng)組件狀態(tài)改變,組件會(huì)重構(gòu)它的描述(description),F(xiàn)lutter會(huì)對(duì)比之前的描述,以確定底層渲染樹從當(dāng)前狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)所需要的最小更改。

基于Weex的Flutter項(xiàng)目框架

最近在做的一個(gè)項(xiàng)目,項(xiàng)目的前期采用Weex開發(fā)。但是隨著交互復(fù)雜度的增加,Weex一處開發(fā)多處多處運(yùn)行的特征并沒有很好的體現(xiàn),相反很多時(shí)候我們還是需要做IOS和Android的適配。如今火熱的Flutter相比Weex和Rn來說,給出了更好的跨平臺(tái)解決方案。所以我們?cè)O(shè)計(jì)了一套基于Weex實(shí)現(xiàn),底層跑在Flutter Engine上的框架。

底層的Runtime采用isolate engine,框架業(yè)務(wù)邏輯,Dom的解析邏輯和Render邏輯都跑在這里。

渲染引擎采用Flutter的Skia,徹底剝離了Android和IOS的差異性.

將Weex VirsualDom的解析都替換成Flutter Widget.

設(shè)計(jì)基于Weex2Dart的Brider,使JS和Dart可以相互調(diào)用

weex-demo的性能展示

release環(huán)境下采用AOT模式,性能會(huì)有質(zhì)的飛躍。

Android-Release版本只有10m大小

相比Weex和Rn具有更好的性能,同時(shí)具有更好的跨平臺(tái)性

相比Flutter,具有動(dòng)態(tài)部署的能力(Flutter Release采用AoT模式并沒有動(dòng)態(tài)部署的能力,即使Debug版本也只是開發(fā)環(huán)境下才有動(dòng)態(tài)化能力并沒有可以實(shí)施項(xiàng)目的能力)

只需要會(huì)Weex開發(fā)或則Rn開發(fā)就可以,不需要額外學(xué)習(xí)Dart,已有的Weex項(xiàng)目可以無縫切換。

使用Flutter + V8/JsCore開發(fā)小程序引擎(一)

眾所周知,小程序是由HTML標(biāo)簽來開發(fā)原生組件,那么首先需要將HTML做解析,這里我們將HTML通過node腳本解析成JSON字符串,再用Dart來解析JSON,映射對(duì)應(yīng)的標(biāo)簽到flutter的組件。這里先簡單介紹實(shí)現(xiàn)的功能以及展示效果,后續(xù)再詳細(xì)介紹。

為了高效解析,直接用flutter的組件名在HTML文件上開發(fā)

直接使用flutter的組件

模仿微信小程序的Api,cc對(duì)應(yīng)是微信小程序的wx

以上HTML中的例子

《使用Flutter + V8/JsCore開發(fā)小程序引擎(二)》

《使用Flutter + V8/JsCore開發(fā)小程序引擎(三)》

【Flutter】利用Future封裝出js中的Promise

前端的同學(xué)對(duì) Promise 肯定都很熟悉,而 Future 便是 dart 中 Promise ,但方法名稱和使用方式還是有些許的差異的。

下面我們嘗試,利用 Future 封裝出js中我們熟悉的 Promise 。

使用示例

Promise.all , Promise.race , Promise.resolve , Promise.reject

Promise.allSettled 方法接受一組 Promise 實(shí)例作為參數(shù),包裝成一個(gè)新的 Promise 實(shí)例。只有等到所有這些參數(shù)實(shí)例都返回結(jié)果,不管是 fulfilled 還是 rejected ,包裝實(shí)例才會(huì)結(jié)束。該方法由 ES2020 引入

Promise.any() 方法接受一組 Promise 實(shí)例作為參數(shù),包裝成一個(gè)新的 Promise 實(shí)例。只要參數(shù)實(shí)例有一個(gè)變成 fulfilled 狀態(tài),包裝實(shí)例就會(huì)變成 fulfilled 狀態(tài);如果所有參數(shù)實(shí)例都變成 rejected 狀態(tài),包裝實(shí)例就會(huì)變成 rejected 狀態(tài)。該方法目前是一個(gè)第三階段的 提案 。

Promise.any() 跟 Promise.race() 方法很像,只有一點(diǎn)不同,就是不會(huì)因?yàn)槟硞€(gè) Promise 變成 rejected 狀態(tài)而結(jié)束。

順便把 延遲函數(shù) 也封裝一下,畢竟毫秒延遲的使用頻率是最高的。

flutter 同時(shí)執(zhí)行多個(gè)異步請(qǐng)求回調(diào)

flutter中提供了Future.wait()函數(shù),可以在執(zhí)行多個(gè)異步請(qǐng)求之后有一個(gè)統(tǒng)一的回調(diào)結(jié)果,但是劣勢在于,每一個(gè)異步函數(shù)的函數(shù)體中都需要執(zhí)行return去返回結(jié)果,如果在異步請(qǐng)求中,有多層success或者fail這種函數(shù)的嵌套,那么可能會(huì)在某個(gè)地方忽略掉retrun,導(dǎo)致沒有辦法拿到正確的結(jié)果。所以這里封裝了一個(gè)類似于js中Promise中的類去執(zhí)行多個(gè)異步請(qǐng)求。

調(diào)用方式如下:

分享標(biāo)題:flutter能用js,簡書 flutter
網(wǎng)頁鏈接:http://chinadenli.net/article5/dseiioi.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序品牌網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)網(wǎng)站制作定制網(wǎng)站響應(yīng)式網(wǎng)站

廣告

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

成都做網(wǎng)站