我正在开发dart_ping包,虽然它目前被标记为支持 iOS,但它实际上并不支持 iOS。这是由于 pub.dev 检测受支持平台的方式。我在 dart-sdk repo 上提交了一个问题。
尽管如此,我想添加 iOS 支持,同时仍然保留对 dart native 的支持。现在,dart_ping 通过调用主机操作系统的 ping 二进制文件来工作。ping 二进制文件在 Windows、macOS、Linux 和 Android 上可用,但在 iOS 上不可用。
当前在 iOS 上执行 ping 的方法使用本机 Objective-C 代码并通过方法通道或ffi调用它们。由于方法通道是一种颤振功能而不是 dart 功能,因此使用它们需要 dart_ping 依赖于颤振 sdk,这将阻止它在 dart 原生应用程序(可能是服务器端)中使用。
另一方面,Ffi 是一个 dart 原生功能,能够做我想做的事。但是,我似乎无法找到一种方法将用于 ping 的 iOS 框架/库/二进制文件包含在我的 dart_ping 包中,以指示颤振应用程序包含它并将其链接到 iOS 目标/运行器。
有什么方法可以在我的包中保留 dart 原生支持,同时还支持需要额外非 dart 框架的 iOS 边缘情况?即使是联合插件也依赖于颤振 sdk。在我看来,我们需要一个等同于联合插件系统的纯 dart。
TLDR:如何在不依赖于 Flutter sdk 的情况下将预编译的 iOS 框架或二进制文件添加到 dart 包中,并仅在包用于 iOS 时调用它?