原文
https://medium.com/flutter-co...
程式碼
https://github.com/charafau/l...
參考
- https://flutter.dev/docs/deve...
- https://engine.chinmaygarde.c...
- https://engine.chinmaygarde.c...
- https://marketplace.visualstu...
- https://marketplace.visualstu...
正文
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 應用程式中呢?我發現這並不簡單,所以我想我會寫這篇文章,這樣你就不用自己解決了。
為了不再拖延下去,讓我們開始吧。
建立方法通道
首先,我們需要建立編解碼器 codec
,binary 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...
© 貓哥
- https://ducafecat.tech/
- https://github.com/ducafecat
- 微信群 ducafecat
- b 站 https://space.bilibili.com/40...
往期
開源
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...