為什么我們應該使用 Flutter?

      網友投稿 1095 2022-05-29

      Flutter 是 Google 提供的新一代跨平臺方案,隨著 Google 在 IO19 宣布 Flutter 支持 Web 平臺,就標志著 Flutter 已經全面持所有平臺(目前 Windows 的只是早期預覽版本,未來有可能會支持 UWP),它提供了非常友好的文檔來幫助各端的同學迅速地進入到 Flutter 的海洋中。同時它的完全開源也讓其有了更快的迭代,更好的生態。

      感興趣的同學可以關注 GitHub:https://github.com/flutter/flutter

      Flutter 的優勢

      相比較目前的混合開發方案,Flutter 提供了大量的文檔,能非常快速且友好的讓你加入到這個大家庭。它并不止 WebView,不用通過解釋 JS 后去操作系統的原生控件,Flutter 核心只有一層輕量的 C/C++代碼(Engine),Flutter 在 Dart 中實現了其他大部分系統(組合、手勢、動畫、框架、widget 等),因此,開發人員可以輕松地進行讀取、更改、替換或移除等操作。這為開發人員提供了對系統的巨大可定制性。

      針對移動端,Flutter 提供了符合 Android 風格的 Material 和符合 iOS 風格的 Cupertino,同時對不同平臺也做了不同的兼容,更好地保留了平臺的特性,如 ScrollView,在 iOS 平臺中,滑動的時候就擁有回彈的效果,在 Android 平臺中,表現出來的就是阻尼的效果。當然,有的時候 Flutter 的 Framework 提供的 UI 格并不能滿足我們的需求,我們還可以去自定義控件。

      Flutter 在開發中支持 Hot Reload,相比較原生,這樣的方式能更高效地開發,真正做到所寫即所得。

      Flutter 與 Native 通訊

      使用平臺通道在客戶端(Flutter UI)和宿主(平臺)之間傳遞消息。

      Flutter Platform Channel

      Flutter 定義了三種不同類型的 Channel,它們分別是:

      為什么我們應該使用 Flutter?

      BasicMessageChannel:傳遞字符串或半結構化信息;

      MethodChannel:傳遞方法調用(method invocation);

      EventChannel:數據流(event streams)通訊。

      三種類型的 Channel 都定義在 platform_channel.dart 中,從源碼中可以看到三種 Channel 都用到了以下三個屬性。

      name:String 類型,表示 channel 的名字,全局唯一;

      codec:MessageCodec 或 MethodCodec 類型,消息的編碼解碼器;

      binaryMessenger:BinaryMessenger 類型,用于發送數據。

      name:

      Flutter 中可能存在多個 Channel,Channel 之所以使用 name 來區分,當從 Flutter 端發送到 Platform 端時,需要傳 channel name,之后通過 name 找到對應的 handle 來處理。

      codec:

      Flutter 定義了兩種 Codec —— MessageCodec 和 MethodCodec,從而用來快速地編碼和解碼。

      binaryMessenger:

      雖然三種 Channel 各有用途,但是他們與 Flutter 通信的工具卻是相同的,均為 BinaryMessager。

      BinaryMessenger 是 Platform 端與 Flutter 端通信的工具,其通信使用的消息格式為二進制格式數據。當我們初始化一個 Channel,并向該 Channel 注冊處理消息的 Handler 時,實際上會生成一個與之對應的

      BinaryMessageHandler,并以 channel name 為 key 注冊到 BinaryMessenger 中。當 Flutter 端發送消息到 BinaryMessenger 時,BinaryMessenger 會根據 channel 找到對應的 BinaryMessageHandler,并交由其處理。

      Handler:

      MessageHandler;

      MethodHandler;

      StreamHandler。

      三種 handle 分別與三種 channel 對應,當我們向 channel 注冊一個 handle 時,實際上就是向 BinaryMessager 注冊一個對應 BinaryMessageHandler。當向 channel 發送消息時,就需要使用對應的 handle 來處理。

      Flutter Packages 的操作

      使用 Packages

      Flutter 支持使用由其他開發者貢獻給 Flutter 和 Dart 生態系統的共享軟件包。您可以在 https://pub.dev/ 中查找。

      之后需要在 pubspec.yaml 中進行添加:

      dependencies:

      flutter:

      sdk:?flutter

      im_flutter_sdk:?^1.0.0

      之后執行 flutter packages get 下載。

      開發的 package

      用戶也可以把自己開發的 Flutter package 并發布在 https://pub.dev/ 上。這里需要注意,如果開發的 package 需要使用第三方 sdk,比如您開發的 package 需要集成環信 Android 和 iOS 的 SDK,需要在對應的配置文件中添加對 SDK 的引用 ,如:

      Android 需要在 build.gradle 中添加 Android SDK:

      dependencies?{

      api?'com.hyphenate:hyphenate-sdk:3.6.4'

      }

      iOS 需要在 podspec 中添加 iOS SDK:

      s.dependency?'Hyphenate',?'~>?3.6.4'

      Packages 發布

      發布前需要先檢查:

      pubspec.yaml

      README.md

      CHANGELOG.md

      這三個文件最后會出現在 https://pub.dev/package 中包信息的展示頁 ,請仔細確認。

      之后執行校驗:

      flutter?packages?pub?publish?--dry-run?--server=https://pub.dartlang.org

      沒有問題后執行發布:

      flutter?packages?pub?publish?--server=https://pub.dartlang.org

      此時會要求校驗郵箱,把命令行中返回的 URL 粘貼到瀏覽器中,使用 Google Gmail 進行驗證,校驗后命令行中會提示校驗成功,之后開始上傳,等待上傳結束后 package 就發布成功了。之后就可以在 pub.dev 中搜索到發布的。

      結語

      Flutter 作為新興的混合開發解決方案,已經被廣泛關注和使用,這不光是因為它有 Google 的支持,更因為它提供了更完善的文檔和更高效的運行方式,開發者不必再把大量精力放到不同平臺的展示上,更好的完成自己的業務,從企業管理者角度看,也大大降低了開發成本。

      iOS Flutter Android

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【精選企業應用】全民戰疫時期,企業遠程辦公如何更高效?
      下一篇:iOS之深入解析靜態庫和動態庫
      相關文章
      在线日韩日本国产亚洲| 国产91精品一区二区麻豆亚洲| 国产亚洲精久久久久久无码AV| 亚洲另类无码一区二区三区| 亚洲无圣光一区二区| 久久精品九九亚洲精品| 亚洲国产成人片在线观看无码| 中文亚洲AV片在线观看不卡| 亚洲国产精品成人一区| 国产成人亚洲精品无码AV大片| 亚洲日韩av无码中文| 亚洲欧美乱色情图片| 亚洲中文字幕乱码熟女在线| 亚洲欧洲日韩国产一区二区三区| 亚洲一区二区三区在线网站| 亚洲国产综合第一精品小说| 亚洲精品亚洲人成在线观看麻豆| 91亚洲精品视频| 亚洲白嫩在线观看| 亚洲同性男gay网站在线观看| 亚洲国产中文在线视频| 亚洲av乱码一区二区三区香蕉| 亚洲一区二区三区国产精品无码| 亚洲一区中文字幕在线观看| 亚洲 欧洲 自拍 另类 校园| 亚洲中文字幕精品久久| 亚洲国产成人手机在线观看| 亚洲爆乳大丰满无码专区| 色偷偷亚洲男人天堂| 亚洲精品和日本精品| 曰韩亚洲av人人夜夜澡人人爽 | 亚洲看片无码在线视频| 一本色道久久88—综合亚洲精品 | 中文字幕精品三区无码亚洲| 亚洲欧美日韩中文无线码| 亚洲AV无码一区二区三区性色 | 国产精品久久久久久亚洲影视 | 亚洲精品无码久久毛片| 日韩国产欧美亚洲v片 | 亚洲gv白嫩小受在线观看| 久久久亚洲欧洲日产国码农村|