柚子快報激活碼778899分享:Flutter 與原生交互總結(jié)
柚子快報激活碼778899分享:Flutter 與原生交互總結(jié)
}
@Override
public void onCancel(Object o) {
}
});
其中的CHANNEL_POST,是自己定義的一個協(xié)議,和Flutter側(cè)統(tǒng)一就可以,在main.dart中注冊該方法就可以,示例代碼如下:
Application.eventChannel = const EventChannel(TTKeys.channel_native_post);
參數(shù)的獲取在路由到的頁面中實現(xiàn),如下所示:
String naviTitle = ‘商品詳情’;
// 回調(diào)事件
void _onEvent(Object event) {
setState(() {
naviTitle = event.toString();
});
}
// 錯誤返回
void _onError(Object error) {
}
三、MethodChannel
該方式可以實現(xiàn)雙向通道,F(xiàn)lutter調(diào)用原生,原生再返回數(shù)據(jù)給Flutter,注冊的方式和EventChannel類似,Android端的代碼如下:
MethodChannel channelGet = new MethodChannel(flutterView, CHANNEL_GET);
channelGet.setMethodCallHandler((call, result) -> {
result.success(authHeader());
switch (call.method) {
case “router”:
String args = (String) call.arguments;
result.success(“回傳給Flutter的參數(shù)”);
break;
default:
break;
}
});
Flutter端使用一下的方法獲取Android回傳的數(shù)據(jù):
Application.methodChannel.invokeMethod(“router”)
這里的路由字段可以自由定義,能區(qū)分開就好。
四、BasicMessageChannel
BasicMessageChannel是一種能夠在native與flutter之間互相發(fā)送消息的通信方式,它支持?jǐn)?shù)據(jù)類型最多,使用范圍最廣。EventChannel與MethodChannel的應(yīng)用場景可以使用BasicMessageChannel來實現(xiàn),但BasicMessageChannel的應(yīng)用場景就不一定能夠使用EventChannel與MethodChannel來實現(xiàn)。該方式有返回值。
Android端代碼如下:
public class BasicMessageChannelPlugin implements BasicMessageChannel.MessageHandler {
private Activity activity;
private BasicMessageChannel messageChannel;
static BasicMessageChannelPlugin registerWith(FlutterView flutterView) {
return new BasicMessageChannelPlugin(flutterView);
}
private BasicMessageChannelPlugin(FlutterView flutterView) {
this.activity = (Activity) flutterView.getContext();
this.messageChannel = new BasicMessageChannel(flutterView, “BasicMessageChannelPlugin”, StringCodec.INSTANCE);
messageChannel.setMessageHandler(this);
}
@Override
public void onMessage(String s, BasicMessageChannel.Reply reply) {
reply.reply(“BasicMessageChannelPlugin收到:” + s);
if (activity instanceof FlutterAppActivity) {
((FlutterAppActivity) activity).showContent(s);
}
}
void send(String str, BasicMessageChannel.Reply reply) {
messageChannel.send(str, reply);
}
}
Flutter端的代碼如下:
class _MyHomePageState extends State {
//StringCodec()為編碼格式
BasicMessageChannel _basicMessageChannel =
BasicMessageChannel(“BasicMessageChannelPlugin”, StringCodec());
@override
void initState() {
_basicMessageChannel.setMessageHandler((message) => Future(() {
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)初中級Android工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但對于培訓(xùn)機(jī)構(gòu)動則近萬的學(xué)費,著實壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Android移動開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Android開發(fā)知識點,真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且會持續(xù)更新!
如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲取?。。▊渥ⅲ篈ndroid)
總結(jié)
最后對于程序員來說,要學(xué)習(xí)的知識內(nèi)容、技術(shù)有太多太多,要想不被環(huán)境淘汰就只有不斷提升自己,從來都是我們?nèi)ミm應(yīng)環(huán)境,而不是環(huán)境來適應(yīng)我們!
這里附上上述的技術(shù)體系圖相關(guān)的幾十套騰訊、頭條、阿里、美團(tuán)等公司2021年的面試題,把技術(shù)點整理成了視頻和PDF(實際上比預(yù)期多花了不少精力),包含知識脈絡(luò) + 諸多細(xì)節(jié),由于篇幅有限,這里以圖片的形式給大家展示一部分。
相信它會給大家?guī)砗芏嗍斋@:
當(dāng)程序員容易,當(dāng)一個優(yōu)秀的程序員是需要不斷學(xué)習(xí)的,從初級程序員到高級程序員,從初級架構(gòu)師到資深架構(gòu)師,或者走向管理,從技術(shù)經(jīng)理到技術(shù)總監(jiān),每個階段都需要掌握不同的能力。早早確定自己的職業(yè)方向,才能在工作和能力提升中甩開同齡人。
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點擊傳送門即可獲??!
(img-8b6unvU2-1712753269674)]
當(dāng)程序員容易,當(dāng)一個優(yōu)秀的程序員是需要不斷學(xué)習(xí)的,從初級程序員到高級程序員,從初級架構(gòu)師到資深架構(gòu)師,或者走向管理,從技術(shù)經(jīng)理到技術(shù)總監(jiān),每個階段都需要掌握不同的能力。早早確定自己的職業(yè)方向,才能在工作和能力提升中甩開同齡人。
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點擊傳送門即可獲??!
柚子快報激活碼778899分享:Flutter 與原生交互總結(jié)
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。