簡體   English   中英

如何在Flutter應用與其android / ios代碼之間設置發布-訂閱頻道?

[英]How to set up a publish-subscribe channel between a Flutter app and it's android/ios code?

因此,我們在編寫定制特定平台的代碼文檔部分中介紹了MethodChannel ,該方法向MethodChannel發送單個請求並返回單個響應,但是我想做的是在Android上運行的服務之間建立一個文字發布通道和我的flutter應用程序,這將允許對我之前關於將閉包作為參數傳遞給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使用示例是否具有將電池狀態更新推送到抖動中的能力,而不僅僅是按需從抖動中獲取它們。

對於上面的示例,這不是特別必要,但是我想與平台建立2向通信通道-對於我正在做的事情,我現在只需要知道這扇門是否對我關閉就可以了。我去Flutter。

我正在尋找使用flutter-side和java-side以及代碼示例的正確的類/庫,因為該部分在文檔中並未很好地涵蓋。

目前似乎可以結合使用MethodChannelEventChannel從Flutter到平台的一條消息,從平台到Flutter的一條消息(一旦Flutter-side訂閱)-如Github上示例所示 (還有一個獨立的swift示例 ) 。

從技術上講,這意味着可以實現pub-sub,這樣做不好, 我向Flutter的團隊寫了一個問題 -建議使用基於Stream的API(然后您可以利用rxdartrxjavarxswift等) ,所以我們將看看情況如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM