新聞中心
flutter屬于原生開發(fā)嗎
Flutter只是 谷歌的移動(dòng) UI 框架,在Android開發(fā)中,你可以理解為 嵌套在activity里面的一個(gè)view即可。

創(chuàng)新互聯(lián)公司專注于建德網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供建德營(yíng)銷型網(wǎng)站建設(shè),建德網(wǎng)站制作、建德網(wǎng)頁設(shè)計(jì)、建德網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造建德網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供建德網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
目前有純flutter開發(fā),還有 flutter,原生混合開發(fā) 兩種模式。。
Flutter/IOS混和開發(fā)情況下,項(xiàng)目?jī)?nèi)首個(gè)Flutter頁面導(dǎo)航無返回問題
在Flutter內(nèi)部機(jī)制中,默認(rèn)使用自動(dòng)管理導(dǎo)航機(jī)制,該機(jī)制在Flutter與原生混和開發(fā)情況下,F(xiàn)lutter頁面不一定作為項(xiàng)目的首頁面,所以出現(xiàn)需要在首個(gè)Flutter頁面使用導(dǎo)航返回的需求。
Flutter的AppBar中定義有屬性:
該屬性默認(rèn)為YES,即默認(rèn)為自動(dòng)管理導(dǎo)航欄,該情況下其會(huì)在非第一個(gè)Flutter頁面創(chuàng)建導(dǎo)航返回按鈕,我們?cè)贏ppBar中將其設(shè)置為false:
并且手動(dòng)添加導(dǎo)航返回按鈕:
完成
Flutter(六)Android與Flutter混合開發(fā)(Hybird)
如果我們目前的項(xiàng)目是Android的,但是接下來我們希望部分頁面可以使用Flutter進(jìn)行開發(fā),甚至我們希望在Native頁面中嵌入FlutterUI組件,那么我們?cè)撊绾螌?shí)現(xiàn)呢?
假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的
這時(shí)候如果你想創(chuàng)建一個(gè)Flutter模塊,使得Android模塊和Flutter模塊之間可以進(jìn)行交互,我們可以通過Android Studio新建一個(gè)Flutter Module,具體過程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為
也就是說,最終你的項(xiàng)目結(jié)構(gòu)會(huì)是這樣的
接下來在Android Module的 build.gradle 文件中添加flutter依賴
先創(chuàng)建一個(gè)Flutter頁面
這里比較重要的是 window.defaultRouteName 這個(gè)字段,這個(gè)字段可以接收從Native傳遞過來的參數(shù) (下文我們會(huì)介紹原生傳遞參數(shù)的方法),也就是說通過這個(gè)字段我們就可以進(jìn)行Flutter頁面的路由的分發(fā)
我們可以直接在Android的 MainActivity 中啟動(dòng)一個(gè) FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對(duì)應(yīng)Flutter層的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注冊(cè) FlutterActivity
自己創(chuàng)建一個(gè) FlutterAppActivity 繼承自 FlutterActivity
在 MainActivity 中啟動(dòng) FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊(cè) FlutterAppActivity )
兩種啟動(dòng)方式的區(qū)別
如果單純只是想打開一個(gè)Flutter頁面,兩種方式實(shí)際上基本沒有太大區(qū)別,第一種方式也許還會(huì)更簡(jiǎn)單一點(diǎn)。但是,在Flutter開發(fā)中,我們往往還需要開發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫 FlutterActivity 的方式更有利于我們?cè)?FlutterActivity 中注冊(cè)我們的Native插件,所以實(shí)際開發(fā)中一般推薦使用第二種方式
擴(kuò)展思考
initialRoute 從名稱上看起來是Flutter提供給我們進(jìn)行Native與Flutter交互的路由跳轉(zhuǎn)的,但是實(shí)際上他就是一個(gè)字符串,我們不僅僅可以傳遞一個(gè)路由名稱,有時(shí)候我們也可以通過這個(gè)參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進(jìn)行解析,這樣我們就可以通過這個(gè)參數(shù)做更多的事情
activity_main.xml
FrameLayout 用于承載Flutter組件
MainActivity.java
使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中
運(yùn)行結(jié)果
上半部分是原生的TextView,下半部分是Flutter的Text組件
本節(jié)主要介紹了Native和Flutter之間的頁面跳轉(zhuǎn),以及同一個(gè)頁面中Native與Flutter組件的組合。接下來會(huì)介紹如何編寫Android插件與Flutter進(jìn)行數(shù)據(jù)交互
分享名稱:flutter原聲混合,flutter 混編
當(dāng)前URL:http://www.dlmjj.cn/article/dsgjgcd.html


咨詢
建站咨詢
