Flutter與原生交互

一均芽、Flutter交互初始化

1丘逸、初始化Method Channel,定義交互名:message Method Channel

static const methodChannel = MethodChannel('messageMethodChannel');

2掀宋、flutter發(fā)起原生調(diào)用

methodChannel.invokeMethod(method, arguments);

其中method為調(diào)用原生函數(shù)對應(yīng)key,arguments為傳遞數(shù)據(jù)深纲,可多個任意類型值仲锄;同時返回值為Future<T>,則可通過await或者then進行回調(diào)監(jiān)聽:

HiChannel.invokeMethod(HiChannel.PERMISSION, {
'permissions': [HiPremissionKey.ACCESS_FINE_LOCATION]
}).then((value) {
  if (value) {
    homeIsLocation(() {
       eventBus.fire(UpdateDataEvent());
       yesCallback();
   }, noCallback);
  }
});

3湃鹊、flutter監(jiān)聽原生調(diào)用

methodChannel.setMethodCallHandler((call) {
  if (call.method == TOAST) {
    toast(call.arguments);
  } else if (call.method == SHOW_LOADING) {
    showLoading();
  } else if (call.method == HIDE_LOADING) {
    hideLoading();
  }
  return Future(() => "接受成功");
});

通過調(diào)用setMethodCallHandler監(jiān)聽原生調(diào)用儒喊,其中call.method為調(diào)用函數(shù)對應(yīng)的key,call.arguments為傳遞數(shù)據(jù)币呵,可為任意類型值怀愧。并原生可監(jiān)聽flutter的回調(diào);
其中flutter回調(diào)通知原生余赢,通過return Future(() => "接受成功");實現(xiàn)芯义。

二、Android原生相關(guān)

1没佑、Main Activity繼承FlutterActivity類毕贼,并實現(xiàn)configureFlutterEngine函數(shù):如下:

image.png

其中優(yōu)先初始化調(diào)用監(jiān)聽:

methodChannel = MethodChannel(
    flutterEngine.dartExecutor.binaryMessenger,
    "messageMethodChannel"
)

其中messageMethodChannel為flutter初始化時定義的交互名。

2蛤奢、調(diào)用監(jiān)聽函數(shù)setMethodCallHandler鬼癣,如下:

image.png

通過call.method判斷調(diào)用方法。call.argument<String>("error")獲取flutter傳遞數(shù)值啤贩。調(diào)用完畢后待秃,可通過result.success(value)進行回調(diào)flutter,其中value為任意類型值痹屹。

3章郁、Android原生調(diào)用Flutter函數(shù)代碼

image.png

調(diào)用invokeMethod函數(shù)實現(xiàn)。其中method為調(diào)用函數(shù)key志衍,arguments為傳遞參數(shù)暖庄。并監(jiān)聽Result回調(diào)。通過success獲取楼肪。

三培廓、IOS原生相關(guān)

1、在application中初始化iOS通信

let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let channel = FlutterMethodChannel(name: "messageMethodChannel", binaryMessenger: controller.binaryMessenger)

2春叫、調(diào)用監(jiān)聽函數(shù)setMethodCallHandler

channel.setMethodCallHandler { (call:FlutterMethodCall, result:@escaping FlutterResult) in
    if (call.method == "sendData") {
       if let dict = call.arguments as? Dictionary<String, Any> {
           let name:String = dict["name"] as? String ?? ""
           let age:Int = dict["age"] as? Int ?? -1
          result(["name":"hello,\(name)","age":age])
      }
   }
}

其中call.method為調(diào)用函數(shù)key肩钠,call.arguments為傳遞參數(shù)值。并且通過result(value)進行回調(diào)暂殖,value為任意類型參數(shù)价匠。

3、IOS原生主動向Flutter發(fā)送數(shù)據(jù)

channel.invokeMethod(method, arguments:args)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛每,一起剝皮案震驚了整個濱河市踩窖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晨横,老刑警劉巖毙石,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉沮,死亡現(xiàn)場離奇詭異,居然都是意外死亡徐矩,警方通過查閱死者的電腦和手機滞时,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滤灯,“玉大人坪稽,你說我怎么就攤上這事×壑瑁” “怎么了窒百?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長豫尽。 經(jīng)常有香客問我篙梢,道長,這世上最難降的妖魔是什么美旧? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任渤滞,我火速辦了婚禮,結(jié)果婚禮上榴嗅,老公的妹妹穿的比我還像新娘妄呕。我一直安慰自己,他們只是感情好嗽测,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布绪励。 她就那樣靜靜地躺著,像睡著了一般唠粥。 火紅的嫁衣襯著肌膚如雪疏魏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天晤愧,我揣著相機與錄音大莫,去河邊找鬼。 笑死养涮,一個胖子當著我的面吹牛葵硕,可吹牛的內(nèi)容都是我干的眉抬。 我是一名探鬼主播贯吓,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜀变!你這毒婦竟也來了悄谐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤库北,失蹤者是張志新(化名)和其女友劉穎爬舰,沒想到半個月后们陆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡情屹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年坪仇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃你。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡椅文,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惜颇,到底是詐尸還是另有隱情皆刺,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布凌摄,位于F島的核電站羡蛾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锨亏。R本人自食惡果不足惜痴怨,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屯伞。 院中可真熱鬧腿箩,春花似錦、人聲如沸劣摇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽末融。三九已至钧惧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勾习,已是汗流浹背浓瞪。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巧婶,地道東北人乾颁。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像艺栈,于是被迫代替她去往敵國和親英岭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容