亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何最好地使用 flutters MethodChannel.invokeMenthod

我如何最好地使用 flutters MethodChannel.invokeMenthod

慕田峪4524236 2023-03-02 15:11:13
我有一個 flutter 項目(插件),它也使用一些本機 java 代碼。為了在 dart 和 java 之間進行通信,我使用MethodChannel.invokeMethod. 這在 dart for java 中非常有效,我可以在 java 中提取命名參數call.argument("name")。然而,另一種方法讓我有點頭疼,因為我需要通過我的方法調用將可變數量的參數傳遞給 dart,但 invokeMethod 僅將“”作為參數Object。我已經看到它只適用于單個參數,如字符串或 int,但我似乎找不到為多個參數實現它的好方法。我本以為有某種列表對象類型可以作為 invokeMethod 的參數傳遞,但我無法在任何地方找到它。你們中的任何人都可以提示如何最好地做到這一點嗎?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您必須將 aMap<String, dynamic>作為單個對象傳遞。(請注意,每個動態必須是允許的數據類型之一。)這在 Java 端顯示為HashMap. 在 Java 端有有用的 getter 函數來訪問哈希映射成員。



  static void foo(String bar, bool baz) {

    _channel.invokeMethod('foo', <String, dynamic>{

      'bar': bar,

      'baz': baz,

    });

  }

爪哇


  String bar = call.argument("bar"); // .argument returns the correct type

  boolean baz = call.argument("baz"); // for the assignment

將此答案用于完整大綱,您可以實現相反的方向,例如:


爪哇


  static void charlie(String alice, boolean bob) {

    HashMap<String, Object> arguments = new HashMap<>();

    arguments.put("alice", alice);

    arguments.put("bob", bob);

    channel.invokeMethod("charlie", arguments);

  }


    String alice = methodCall.arguments['alice'];

    bool bob = methodCall.arguments['bob'];


查看完整回答
反對 回復 2023-03-02
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號