原文
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…