互聯(lián)網(wǎng)信息化咨詢/技術(shù)開發(fā)/整合營(yíng)銷
請(qǐng)通過以下方式免費(fèi)咨詢
提交
Flutter 是 Google 提供的新一代跨平臺(tái)方案,隨著 Google 在 IO19 宣布 Flutter 支持 Web 平臺(tái),就標(biāo)志著 Flutter 已經(jīng)全面持所有平臺(tái),它提供了非常友好的文檔來幫助各端的同學(xué)迅速地進(jìn)入到 Flutter 的海洋中。同時(shí)它的完全開源也讓其有了更快的迭代,更好的生態(tài)。
Flutter 提供了符合 Android 風(fēng)格的 Material 和符合 iOS 風(fēng)格的 Cupertino,同時(shí)對(duì)不同平臺(tái)也做了不同的兼容,更好地保留了平臺(tái)的特性,如 ScrollView,在 iOS 平臺(tái)中,滑動(dòng)的時(shí)候就擁有回彈的效果,在 Android 平臺(tái)中,表現(xiàn)出來的就是阻尼的效果。當(dāng)然,有的時(shí)候 Flutter 的 Framework 提供的 UI 格并不能滿足我們的需求,我們還可以去自定義控件。
Flutter Platform Channel
Flutter 定義了三種不同類型的 Channel,它們分別是:
BasicMessageChannel:傳遞字符串或半結(jié)構(gòu)化信息;MethodChannel:傳遞方法調(diào)用(method invocation);EventChannel:數(shù)據(jù)流(event streams)通訊。三種類型的 Channel 都定義在 platform_channel.dart 中,從源碼中可以看到三種 Channel 都用到了以下三個(gè)屬性。
name:String 類型,表示 channel 的名字,全局唯一;codec:MessageCodec 或 MethodCodec 類型,消息的編碼解碼器;binaryMessenger:BinaryMessenger 類型,用于發(fā)送數(shù)據(jù)。name:
Flutter 中可能存在多個(gè) Channel,Channel 之所以使用 name 來區(qū)分,當(dāng)從 Flutter 端發(fā)送到 Platform 端時(shí),需要傳 channel name,之后通過 name 找到對(duì)應(yīng)的 handle 來處理。
codec:
Flutter 定義了兩種 Codec —— MessageCodec 和 MethodCodec,從而用來快速地編碼和解碼。
Flutter 作為新興的混合開發(fā)解決方案,已經(jīng)被廣泛關(guān)注和使用,這不光是因?yàn)樗?Google 的支持,更因?yàn)樗峁┝烁晟频奈臋n和更高效的運(yùn)行方式,開發(fā)者不必再把大量精力放到不同平臺(tái)的展示上,更好的完成自己的業(yè)務(wù),從企業(yè)管理者角度看,也大大降低了開發(fā)成本。