1 File-New Flutter Project -Flutter-next選擇 project type(Android studio不同版本會(huì)有所差異)
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、淇縣網(wǎng)絡(luò)推廣、小程序開發(fā)、淇縣網(wǎng)絡(luò)營(yíng)銷、淇縣企業(yè)策劃、淇縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供淇縣建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:vcdvsql.cn
參考鏈接:
2.1本地引入
這里plugin是flutter module引入使用,如果想project引用其實(shí)可以直接在.android下面創(chuàng)建插件
2.2遠(yuǎn)程引用
本文將為大家講解如何通過pub庫(kù)插件快速實(shí)現(xiàn)Flutter應(yīng)用在雙屏Android設(shè)備上交互通信。
插件地址: flutter_subscreen_plugin
雙屏插件實(shí)現(xiàn)原理: FlutterPlugin 實(shí)現(xiàn)雙屏
主屏上的UI,我們添加一個(gè)按鈕,點(diǎn)擊生成一個(gè)隨機(jī)數(shù),發(fā)送給副屏顯示,用于驗(yàn)證主屏與副屏的通信交互:
副屏ui上我們?cè)趇nitState中監(jiān)聽主屏給副屏的消息流,并將監(jiān)聽到的數(shù)據(jù)展示在文本上:
完成上述步驟,簡(jiǎn)單的demo就做好了,如下是demo在實(shí)體設(shè)備的運(yùn)行效果圖:
new flutter project,選擇Flutter Plugin,next,輸入插件名,包名,運(yùn)行平臺(tái)及編寫語言,finish!
如上圖,筆者的插件名為log_plugin,選用Android,java語言開發(fā)
在自動(dòng)打開和插件名同名的dart文件,聲明要使用其他語言的方法,本例使用java 語言實(shí)現(xiàn)Android原生的log輸出
編輯 android/src/main/java/com/whh/log_plugin/LogPlugin.java
在onMethodCall方法中,區(qū)別聲明方法名,以實(shí)現(xiàn)該方法邏輯
至此,簡(jiǎn)單的插件開發(fā)完成,接下來測(cè)試
example是插件測(cè)試工程,打開其中的main.dart
打開已有的或者新建一個(gè)flutter app project,在其pubspec.yaml引入插件
使用pub get 關(guān)聯(lián)到插件
詳見官網(wǎng)文檔
此文為 flutter 初學(xué)者記錄學(xué)習(xí)過程,附上 github ,小小分享~
每天進(jìn)步一點(diǎn)點(diǎn)。。。(2021-08-10)
需求,app中使用webview和h5交互,根據(jù)h5發(fā)過來的消息,在屏幕上展示flutter組件,并且可以發(fā)送消息給h5。
首先使用的組件是flutter_WebView_plugin,這個(gè)組件不能嵌套flutter組件,所以放棄這個(gè)組件。
flutter_inappbrowser 可以實(shí)現(xiàn)組合布局, 所以選用了此庫(kù), GitHub鏈接
[
如果我們目前的項(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調(diào)用原生能力的一種解構(gòu)方式。
Flutter 會(huì)通過 MethodChannel 將數(shù)據(jù)傳遞給 iOS/ Android ,反之 iOS/ Android 也可以通過 MethodChannel 將數(shù)據(jù)傳回給 Flutter。
在Flutter工程根目錄創(chuàng)建plugins目錄,在plugins目錄下執(zhí)行下面命令:
Flutter-Native
Native-Flutter
當(dāng)前標(biāo)題:flutter插件交互,flutter插件和安卓原生交互
網(wǎng)頁網(wǎng)址:http://vcdvsql.cn/article14/dsispge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、Google、軟件開發(fā)、網(wǎng)站排名、云服務(wù)器、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)