java - 如何在 Flutter 应用和它的 android/ios 代码之间建立一个发布-订阅通道?
问题描述
因此,我们MethodChannel
在编写自定义平台特定代码文档部分中介绍了该内容,该部分向 Javaland 发送单个请求并返回单个响应,但我想做的是在 Android 上运行的服务之间建立一个文字 pubsub 通道 &我的颤振应用程序,这将允许我之前关于将闭包作为参数传递给Java端的问题的替代方法,因为它允许该函数
Future<Result> = doPayment(
amount: 100.00,
currency: 'USD',
onPasscodeEntry: () => _renderInputBox(),
onValidation: () => _doValidation()
);
通过执行以下操作来实现:
Future<Result> doPayment({int amount, String currency, Function onPasscodeEntry, Function onValidation}) {
Subscription sub;
try {
sub = subscribe(channel: 'myapp/doPayment/$paymentUid')
sub.send("initialize", {"amount": amount, "currency": currency});
sub.receive("onPasscodeEntry").then((payload) => onPasscodeEntry(payload));
sub.receive("onValidation").then((payload) => onValidation(payload));
return sub.receive("result")
finally {
sub?.send("deinitialize");
sub?.end()
return null;
}
}
你明白了:-)
似乎BasicMessageChannel可能是我的朋友,但没有使用示例,也没有关于如何在平台端(又名 Javaland)挂钩它的示例,我也希望有一个接收函数 - 等待某事的东西发生在 Javaland 并将通知推送到 Flutter 端,
一个简单的例子是,如果MethodChannel
使用示例能够将电池状态更新推送到颤振中,而不仅仅是按需从颤振中获取它们。
上面的例子不是特别需要,但我想建立一个与平台的双向沟通渠道——对于我正在做的事情,我现在只需要知道这扇门对我没有关闭,如果我去颤振。
我正在寻找合适的类/库来使用flutter-side和java-side以及代码示例,因为文档中没有很好地涵盖该部分。
解决方案
似乎目前可以使用MethodChannel
&的组合EventChannel
- 从 Flutter 到平台的一条消息,从平台到 Flutter 的一条消息(一旦 Flutter 端订阅) - 如Github 上的示例所示(还有一个单独的 swift 示例)。
从技术上讲,这意味着可以实现 pub-sub,但这样做并不好,我向 Flutter 的团队写了一个关于它的问题- 建议Stream
改为使用 -based API(然后你可以利用rxdart
, rxjava
, rxswift
& 其他),所以我们'看看情况如何。
推荐阅读
- angularjs - 超过 50,000 条记录在 angularjs 的下拉列表中加载 ng-repeat
- windows - 天蓝色管道“命令行”代理作业是否从上一个作业继承工作目录?
- flutter - 有没有办法连接到安卓设备的激光扫描仪?
- python - Matplotlib ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- python-3.x - Python '\r' 在同一行打印,但不会删除前面的文本
- google-chrome-extension - Chrome 扩展 newTab 和 amazon associates
- encryption - 如何将 30 位数字加密为 10 位数字?
- java - 在泛型类型中使用方法
- php - 在多对多上使用 LIKE 进行教义查询 - Symfony 4
- c++ - 如何遍历结构中的向量?