Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)
(一)Android代碼設(shè)置
1,打開(kāi)Android Studio 創(chuàng)建一個(gè)應(yīng)用程序,包名dev.android.book 2, 創(chuàng)建一個(gè)MyApplication ,應(yīng)用在AndroidManifest.xml文件中的application的android:name屬性上 3,創(chuàng)建FlutterEngine的實(shí)例,然后把這個(gè)實(shí)例添加到緩存的FlutterEngine當(dāng)中 4,創(chuàng)建MethodChannel的實(shí)例,指定一個(gè)此實(shí)例的唯一字符串,例如dev.android.book/add 5, 設(shè)置methodChannel方法回調(diào)函數(shù),接收Flutter通過(guò)MethodChannel發(fā)過(guò)來(lái)的消息 6,F(xiàn)lutter發(fā)過(guò)來(lái)的消息眾多,是通過(guò) MethodCall對(duì)象中的方法名來(lái)判斷 7,Android端向Flutter發(fā)送消息,也是通過(guò)methodChannel對(duì)象的的invokeMethod方法
針對(duì)以上的各個(gè)步驟添加說(shuō)明
1,很簡(jiǎn)單就是打開(kāi)Android studio =>File=>New Project=>Select a Project Template=>input Name, Package name等=>Finish
2,創(chuàng)建BookApplication 目的是 預(yù)初始化FlutterEngine,啟動(dòng)Flutter有三種方式
a,第一種方式,就是創(chuàng)建默認(rèn)的FlutterEngine 比如 FlutterActivity.createDefaultIntent(this) b, 第二種方式,就是創(chuàng)建新的FlutterEngine 比如 FlutterActivity.withNewEngine().build(this) c, 第三種方式,就是使用緩存FlutterEngine 比如 FlutterActivity.withCachedEngine(ENGINE_ID).build(this)
簡(jiǎn)單解析這三種方式 a和b其實(shí)是一樣的,F(xiàn)lutterActivity.createDefaultIntent其實(shí)調(diào)用的還是FlutterActivity.withNewEngine()方法 如下圖所示,

如果在開(kāi)發(fā)中不建議使用a,b方法,是因?yàn)樵陂_(kāi)發(fā)過(guò)程中,在原聲當(dāng)中打開(kāi)Flutter頁(yè)面,會(huì)有一段時(shí)間的黑屏,這是因?yàn)镕lutterEngine在初始化,初始化完成之后,就可以顯示Flutter頁(yè)面
3,創(chuàng)建FlutterEngine的實(shí)例 有兩種方法,直接傳Context,或者傳Context dartVmArgs

4,創(chuàng)建MethodChannel的實(shí)例,提供兩種構(gòu)造方法 messenger和name, message和name 和 MethodCodec

5,設(shè)置MethodChannel方法的回調(diào),接收Flutter傳過(guò)來(lái)的內(nèi)容,提供一個(gè)參數(shù) MethodCallHandler

6,F(xiàn)lutter傳過(guò)來(lái)的值各種各樣,是通過(guò)接口 MethodCallHandler

MethodCallHandler里面的抽象方法onMethodCall來(lái)區(qū)分,onMethodCall方法里面有兩個(gè)參數(shù) MethodCall包含傳過(guò)來(lái)參數(shù)的一些信息 比如方法名,參數(shù)等信息,

result表示成功或者失敗的一些回調(diào)信息

7,Android端向Flutter端發(fā)送消息,是通過(guò)注冊(cè)的MethodChannel 調(diào)用invokeMethod方法,有兩個(gè)參數(shù),方法的名字,和參數(shù)

c,建議使用這種提前初始化FlutterEngine的方法,使用過(guò)程中,頁(yè)面幾乎沒(méi)有停頓打開(kāi)Flutter頁(yè)面,所以要在Application中提前初始化 初始化代碼如下

(二)Flutter代碼設(shè)置
1,打開(kāi)VSCODE 創(chuàng)建一個(gè)應(yīng)用程序,包名my_flutter 2,創(chuàng)建MethodChannel的實(shí)例,指定一個(gè)此實(shí)例的唯一字符串,例如dev.android.book/add 3, 設(shè)置methodChannel方法回調(diào)函數(shù),接收Flutter通過(guò)MethodChannel發(fā)過(guò)來(lái)的消息 4,Android發(fā)過(guò)來(lái)的消息眾多,是通過(guò) MethodCall對(duì)象中的方法名來(lái)判斷 5,Android端向Flutter發(fā)送消息,也是通過(guò)methodChannel對(duì)象的的invokeMethod方法
針對(duì)以上的各個(gè)步驟添加說(shuō)明
1,創(chuàng)建一個(gè)flutter model,最后要作為依賴添加到原聲代碼當(dāng)中,通過(guò)命令 flutter create -t module --org com.flutter my_flutter,執(zhí)行完成之后如圖所示

2,在所在的類中直接初始化 MethodChannel ,比如 final _channel = MethodChannel(channel_name); 參數(shù)是一個(gè)唯一的字符串,這個(gè)字符串必須和Android端中的字符串保持一致

3,給MethodChannel設(shè)置方法調(diào)用回調(diào) ,參數(shù)和Android端基本上一致

4,Android端發(fā)送過(guò)來(lái)的消息 也是通過(guò) MethodCall來(lái)判斷,可以更具方法名來(lái)判斷

5,F(xiàn)lutter端向Android端發(fā)送消息,也是通過(guò)注冊(cè)的MethodChannel調(diào)用invokeMethod,發(fā)送消息

(三)向Android工程中引入剛才創(chuàng)建的FLutter工程
在Android工程中的settings.gradle中添加如下代碼

然后在依賴當(dāng)中添加Flutter工程模塊

完成以上步驟,就完成了向已有的Android工程中添加flutter模塊,以及Android端和Flutter端數(shù)據(jù)是怎么傳遞的。
到此這篇關(guān)于Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Flutter Android 互相傳遞數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android開(kāi)發(fā)中使用Intent打開(kāi)第三方應(yīng)用及驗(yàn)證可用性的方法詳解
這篇文章主要介紹了Android開(kāi)發(fā)中使用Intent打開(kāi)第三方應(yīng)用及驗(yàn)證可用性的方法,結(jié)合實(shí)例形式分析了Android使用Intent打開(kāi)第三方應(yīng)用的三種常用方式及使用注意事項(xiàng),需要的朋友可以參考下2017-11-11
Android中activity跳轉(zhuǎn)按鈕事件的四種寫法
這篇文章主要介紹了Android中activity跳轉(zhuǎn)按鈕事件的四種寫法,下文中包括四個(gè)activity的內(nèi)容詳解,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
Kotlin創(chuàng)建一個(gè)好用的協(xié)程作用域
這篇文章主要介紹了Kotlin創(chuàng)建一個(gè)好用的協(xié)程作用域,kotlin中使用協(xié)程,是一定要跟協(xié)程作用域一起配合使用的,否則可能協(xié)程的生命周期無(wú)法被準(zhǔn)確控制,造成內(nèi)存泄漏或其他問(wèn)題2022-07-07
微信小程序首頁(yè)數(shù)據(jù)初始化失敗的解決方法
這篇文章主要介紹了微信小程序首頁(yè)數(shù)據(jù)初始化失敗的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Android開(kāi)發(fā)之Wifi基礎(chǔ)教程
這篇文章主要介紹了Android開(kāi)發(fā)Wifi基礎(chǔ)教程,實(shí)例分析了Wifi的各種常見(jiàn)基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
Android UI實(shí)現(xiàn)底部切換標(biāo)簽fragment
這篇文章主要為大家詳細(xì)介紹了Android UI實(shí)現(xiàn)底部切換標(biāo)簽的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Flutter質(zhì)感設(shè)計(jì)之直接輸入
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之直接輸入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android13實(shí)時(shí)刷新頻率的實(shí)現(xiàn)代碼(完整代碼)
文章介紹了Android 13中如何通過(guò)設(shè)置開(kāi)發(fā)者選項(xiàng)顯示屏幕刷新頻率,具體涉及到Settings應(yīng)用中的代碼和SurfaceFlinger服務(wù)的實(shí)現(xiàn),感興趣的朋友一起看看吧2025-01-01

