基於 Linux 的 Flutter 方法通道 Channels

會煮咖啡的貓發表於2021-09-25

原文

https://medium.com/flutter-co...

程式碼

https://github.com/charafau/l...

參考

正文

Flutter Method Channels on Linux

基於 Linux 的 Flutter 方法通道

又見面了!今天我將繼續我的 Flutter Linux 之旅,我們將再次接觸 Linux 整合。上次我們設法為外掛開發設定了 Visual Studio Code,今天我們將進一步研究 Method Channels。

如果你想建立一個帶有方法通道支援的外掛,非常簡單,只需要使用 flutter create \-t plugin \--platforms=linux <name of your project> 從模板生成一個 Flutter 專案。但是,如果你不想建立一個單獨的外掛,只是新增一些自定義程式碼到 Flutter Linux 應用程式中呢?我發現這並不簡單,所以我想我會寫這篇文章,這樣你就不用自己解決了。

為了不再拖延下去,讓我們開始吧。

建立方法通道

首先,我們需要建立編解碼器 codecbinary messenger 二進位制信使和通道。接下來,我們將向自定義方法分配一個方法呼叫,我們將在下一步中建立這個方法。

為此,讓我們開啟我的 my_application.cc 。在 linux 資料夾中抄送並導航到我的 my_application_activate 函式。接下來,我們在外掛初始化之後實現上面描述的物件。

在下面的示例中,name_of_our_channel 的名稱是我們從 Dart 程式碼呼叫的方法。

回撥函式

現在我們來建立一個回撥函式:

非常簡單,我們傳遞一個通道、 methodcall 和一些使用者資料。

To check for the channel’s method name we need to use the fl_method_call_get_name function on method_call object. And compare it with strcmp like so:

為了檢查通道的方法名,我們需要在 method_call 物件上使用 fl_method_call_get_name 函式。然後把它和 strcmp 比較,就像這樣:

方法未實現響應

如果傳遞給 channel 的方法不存在,我們需要返回未實現的結果來做這件事,我們需要呼叫 fl_method_call_respond

錯誤處理

在開始討論引數和自定義結果之前,讓我們先快速瞭解一下錯誤處理。

幸運的是,它與未實現的方法非常相似:

我們可以看到它幾乎是相同的,我們只是用 fl_method_error_response_new 建立結果,而不是用 fl_method_not_implemented_response_new

獲取 Dart 引數

好了,現在是時候從頭開始寫我們想寫的東西了。讓我們假設我們想要從 Dart 傳送資料到 c + + ,為了做到這一點,我們只需要從 Dart 端傳送一個地圖,但是如何獲取呢?

為此,我們需要呼叫 fl_method_call_get_args(FlMethodCall) ,它返回一個指向 FlValue 的指標。

接下來我們檢查返回的值是否是正確的型別:

在上面的例子中,我們查詢字串,但是還有其他的,比如 int、 float、 bool、 map。對於完整的清單檢驗 Flutter Engine Documentation

型別檢查也是一樣,檢查列舉的整個列表到 Documentation

返回一些值

我們幾乎完成了,我們設法處理了未實現的方法、錯誤和從方法中獲取引數。剩下的是返回 Dart 的值。

對我們來說幸運的是,這與我們已經完成的工作非常相似,我們只需要建立 FlMethodResponse 並將 FlValue 放入其中。下面是一個例子:

像前面一樣,這裡有更多價值創造函式的文件連結 link to documentation for more value creation function

程式碼完成 + 除錯

我想我應該給你一些獎勵,因為你來到這裡,所以我決定在 Visual Studio Code 中編寫程式碼完成和除錯的設定程式。

在開始之前,必須安裝 C++Cmake 外掛。

首先讓我們設定程式碼完成。建立名為 c_cpp_properties.json 的檔案。Json 在裡面。在你的專案的根目錄下放一個 .vscode 資料夾,然後把這個配置檔案放進去:

檢查編譯器路徑(Flutter 使用 Clang)並根據需要調整 c/c + + 標準。

為了設定除錯,我們需要在 launch.json 中建立啟動配置 .vscode 資料夾。讓我們來看一下配置:

非常簡單,但是需要更改二進位制名稱。此外,要知道,使它的工作,你需要建立您的 Flutter 專案與 flutter run

本文結束

謝謝你的閱讀,希望你會發現它很有用。

程式設計愉快!

完整的例子可以在這裡找到。

https://github.com/charafau/l...


© 貓哥

往期

開源

GetX Quick Start

https://github.com/ducafecat/...

新聞客戶端

https://github.com/ducafecat/...

strapi 手冊譯文

https://getstrapi.cn

微信討論群 ducafecat

系列集合

譯文

https://ducafecat.tech/catego...

開源專案

https://ducafecat.tech/catego...

Dart 程式語言基礎

https://space.bilibili.com/40...

Flutter 零基礎入門

https://space.bilibili.com/40...

Flutter 實戰從零開始 新聞客戶端

https://space.bilibili.com/40...

Flutter 元件開發

https://space.bilibili.com/40...

Flutter Bloc

https://space.bilibili.com/40...

Flutter Getx4

https://space.bilibili.com/40...

Docker Yapi

https://space.bilibili.com/40...

相關文章